news 2026/3/20 1:39:37

Python语法进阶笔记(四)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python语法进阶笔记(四)

文件处理

一、基础操作

  1. 文件:文件就是存储在某种长期存储设备上的一段数据

  2. 文件操作

    打开文件 -----> 读写操作 ------> 关闭文件

  3. 文件对象的方法

    1. open ():创建一个File对象,默认是以只读模式打开

    2. read (n): n 表示从文件中读取的数据长度,没有传n值就默认一次性读取文件的所有内容

    3. write():将指定内容写入文件

    4. close():关闭文件

  4. 属性

    1. 文件名.name : 返回要打开的文件的文件名,可以包含文件的具体路径(绝对路径)

    2. 文件名.mode : 返回文件的访问模式

    3. 文件名.closed :检测文件是否关闭,关闭就返回 True

    # 已创建文件test.txt-------- hello world f = open('test.txt') # 括号输入r'D:\09_PythonTest\demotest\test.txt'时,name显示路径 print(f.name) # 文件名 test.txt 路径 D:\09_PythonTest\demotest\test.txt print(f.mode) # 打开模式 r print(f.closed) # 文件是否关闭 False # print(f.read()) # 文件内容 hello world print(f.read(3)) # 文件内容 hel # 2. 关闭文件 f.close() print(f.closed)

二、读写操作

  1. read(n): n 表示从文件中读取的数据长度,没有传n值或者传的是负值就默认一次性读取文件的所有内容

  2. readline():一次只读取一行内容,方法执行完,会把文件指针移到下一行,准备再次读取

    test.txt内容:

    hello world1

    hello world2

    hello world3

    f =open ('test.txt') # print(f.readline()) , 每次读取一行 while True: text = f.readline() # 每次读取一行 if not text: break print(text) f.close() # 输出全部
  3. readlines():按照行的方式把文件内容一次性读取,返回的是一个列表,每一行数据就是列表中的一个元素

    f =open ('test.txt') print(f.readlines(), type(f.readlines())) f.close() # ['hello world1\n', 'hello world2\n', 'hello world3'] <class 'list'>
    f =open ('test.txt') for line in f.readlines(): print(line.strip()) # 去掉每行末尾的换行符 f.close() # hello world1 # hello world2 # hello world3
  4. write():用于将指定内容写入已打开的文件中,返回值是写入的字符 / 字节数(文本模式返回字符数,二进制模式返回字节数)。

    注意事项:

    1. 无自动换行:write() 不会自动添加换行符\n,如果需要换行,必须手动在字符串末尾添加。

    2. 写入权限:如果文件以只读模式(r)打开,调用write()会抛出io.UnsupportedOperation: not writable异常。

    3. 缓冲区机制:write() 写入的内容会先存到内存缓冲区,并非立即写入硬盘 ——

      • 用with语句会自动刷新缓冲区并关闭文件;

      • 手动刷新可调用f.flush();

      • 关闭文件f.close()也会刷新缓冲区。

    4. a/a+模式的特殊性:无论当前指针在哪个位置,write() 都会强制将内容写入文件末尾(这是a模式的特性,和指针无关)。

三、访问模式

在 Python 中使用open()函数打开文件时,第二个参数就是访问模式,它决定了你能对文件执行什么操作(读、写、追加等),以及文件不存在时的行为。

常见的模式:

  1. 'r' :只读(默认);只能读取文件内容,不能修改;若文件不存在,报错 FileNotFoundError

  2. 'w':只写;先清空文件原有内容,后写入;若文件不存在,则创建新文件

  3. 'a': 追加;在文件末尾写入内容,不覆盖原有内容;若文件不存在则创建新文件

  4. 'r+':读写模式,文件必须存在,写入时从文件开头覆盖(不是清空全部)。

  5. 'w+':先写再读模式,先清空文件(不存在则创建),写完后可以读取内容。

  6. 'a+':追加读模式,写入内容到末尾,也可以读取文件内容(需先移动文件指针)。

  7. 在所有模式后加b(如'rb'、'wb'、'ab'),表示以二进制方式操作文件,用于处理图片、视频、音频等非文本文件。注意:二进制模式下,读写的内容是bytes类型,而非字符串,且open()中不需要指定encoding参数。

    案例:图片复制:

    """ 1.读取图片 图片是一个二进制文件,想要写入必须先拿到 2.写入图片 """ # 先读取图片 with open(r'D:\09_PythonTest\images\小象.jpeg', 'rb') as f: img = f.read() print( img) # 将读取到的内容写入到当前文件中 with open(r'D:\09_PythonTest\images\小象1.jpeg', 'wb') as f: f.write(img)

文件指针说明:

标记从哪个位置开始读取数据,是标记文件读写位置的「光标」,操作文件时指针会自动移动

1. 指针的初始位置

不同打开模式下,指针的初始位置不同:

  • r/r+/rb/rb+:指针默认在文件开头(位置 0)。

  • w/w+/wb/wb+:先清空文件,指针在文件开头(位置 0)。

  • a/a+/ab/ab+:指针默认在文件末尾(无论你怎么移动,写入时都会强制回到末尾)。

2. 如何操作文件指针

Python 提供了两个核心方法来操作指针:

  • f.tell():返回当前指针的位置(数字,单位是字节)。

  • f.seek(offset, whence):手动移动指针位置。

    • offset:偏移量(正数 = 向后移,负数 = 向前移)。

    • whence:基准位置(默认 0):

      • 0:以文件开头为基准(必须配合非负 offset)。

      • 1:以当前指针位置为基准(仅二进制模式可用)。

      • 2:以文件末尾为基准(仅二进制模式可用)。

f = open('test.txt', 'w+', encoding='utf-8') f.write('hello world*****') # print(f.read()) print("当前文件指针的位置:", f.tell()) f.seek(0, 0) print("当前文件指针的位置:", f.tell()) print(f.read()) # 当前文件指针的位置: 16 # 当前文件指针的位置: 0 # hello world*****

四、编码格式

  1. with …… open …… as 别名: (推荐使用)

    格式:

    with open(文件路径, 访问模式, encoding='utf-8') as 文件对象别名:

    # 缩进的代码块:对文件对象进行读写操作

    # 代码块结束后,文件会自动关闭

    作用:代码执行完,系统会自动调用f.close(),可以省略文件关闭步骤

    with open('test.txt', 'r', encoding='utf-8') as f: print(f.read()) print(f.closed) # 文件文本内容 # True
  2. encoding 表示编码集。根据文件的实际保存编码进行获取数据,对于我们而言,使用更多的是 utf-8。

    注意:

    • file 对象的 encoding 参数的默认值与平台有关,比如 windows 上默认字符编码为 GBK。

    • encoding='utf-8'指定文本文件的读写编码规则,是跨平台避免乱码的核心;

    • 文本模式必须显式指定,二进制模式(带b)不能用此参数;

    • 核心原则:写入和读取的编码必须一致,优先使用utf-8,兼容 Windows GBK 文件时用gbk。

五、目录常用操作

os模块:导入

  1. 文件重命名:os.rename(旧文件名, 新文件名)

  2. 删除文件:os.remove(文件名)

  3. 创建文件夹:os.mkdir(文件夹名)

  4. 获取当前目录的绝对路径:os.getcwd()

  5. 获取目录列表:os.listdir(目录名),括号为空时,获取当前目录列表

  6. 删除文件夹:os.rmdir(文件夹名)

  7. 创建多层目录:os.makedirs(多层目录名)

  8. 切换目录:os.chdir(目标目录)

    import os os.rename("old_file.txt", "new_file.txt") # 重命名文件 os.rename("old_dir", "new_dir") # 重命名目录 os.remove("test.txt") # 删除test.txt文件 os.mkdir("new_folder") # 在当前目录创建new_folder文件夹 current_path = os.getcwd() print("当前目录:", current_path) # 比如输出:C:\Users\XXX\Desktop # 获取当前目录的所有内容 current_files = os.listdir() print("当前目录内容:", current_files) # 输出:['file1.txt', 'folder1', ...] # 获取指定目录的内容 target_files = os.listdir("C:/Users") print("指定目录内容:", target_files os.rmdir("empty_folder") # 删除空的empty_folder目录 os.makedirs("a/b/c") # 一次性创建a、a/b、a/b/c三层目录 os.chdir("new_folder") # 切换到new_folder目录 print(os.getcwd()) # 验证当前目录
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 9:03:24

联发科手机终极救砖指南:MTKClient完整使用手册

联发科手机终极救砖指南&#xff1a;MTKClient完整使用手册 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 还在为联发科手机变砖而烦恼吗&#xff1f;MTKClient这款开源工具能够帮你轻松解…

作者头像 李华
网站建设 2026/3/15 9:03:16

YOLOv11无人值守检测:24小时运行稳定性优化

YOLOv11无人值守检测&#xff1a;24小时运行稳定性优化 1. 技术背景与挑战 随着智能监控、工业自动化和边缘计算的快速发展&#xff0c;基于深度学习的目标检测技术在无人值守场景中的应用日益广泛。YOLO&#xff08;You Only Look Once&#xff09;系列作为实时目标检测领域…

作者头像 李华
网站建设 2026/3/15 11:54:27

Z-Image-ComfyUI单卡推理验证:zsh脚本执行步骤详解

Z-Image-ComfyUI单卡推理验证&#xff1a;zsh脚本执行步骤详解 1. 背景与技术定位 随着文生图大模型在内容创作、设计辅助和多模态交互等领域的广泛应用&#xff0c;高效、低延迟的本地化推理成为工程落地的关键挑战。阿里最新推出的 Z-Image 系列模型&#xff0c;凭借其6B参…

作者头像 李华
网站建设 2026/3/15 11:21:45

想做智能换装?先试试BSHM人像抠图效果

想做智能换装&#xff1f;先试试BSHM人像抠图效果 随着虚拟试衣、AI换装、数字人等应用的兴起&#xff0c;高质量的人像分割与抠图技术成为关键支撑能力。在众多图像抠图方案中&#xff0c;BSHM&#xff08;Boosting Semantic Human Matting&#xff09; 因其对复杂背景和细节…

作者头像 李华
网站建设 2026/3/16 3:15:21

PaddleOCR-VL-WEB大模型解析能力揭秘|支持109种语言的SOTA文档处理方案

PaddleOCR-VL-WEB大模型解析能力揭秘&#xff5c;支持109种语言的SOTA文档处理方案 1. 简介&#xff1a;面向复杂场景的高效文档智能新范式 随着多模态大模型在视觉理解与自然语言生成领域的持续突破&#xff0c;基于统一架构的端到端文档解析正逐步取代传统流水线式OCR系统。…

作者头像 李华
网站建设 2026/3/15 10:52:41

一键四风格艺术转换:AI印象派工坊性能优化策略

一键四风格艺术转换&#xff1a;AI印象派工坊性能优化策略 1. 背景与挑战&#xff1a;轻量级图像风格迁移的工程瓶颈 随着用户对个性化内容创作需求的增长&#xff0c;图像艺术化处理服务逐渐成为智能应用中的高频功能。AI 印象派艺术工坊&#xff08;Artistic Filter Studio…

作者头像 李华