文件操作
一、文件操作整体流程
Python 操作文件三步走:
打开文件 open()
读 / 写 文件内容
关闭文件 close()
推荐用法:with 语句,自动关闭文件,不用手动写 close()
二、open 函数基础语法
open(file, mode='r', encoding='utf-8')
常用打开模式
| 模式 | 含义 |
|---|---|
| r | 只读(默认),文件不存在报错 |
| w | 只写,清空原有内容,不存在则新建 |
| a | 追加写入,在文件末尾添加,不覆盖 |
| r+ | 读写 |
| b | 二进制模式(图片、视频、exe) |
写中文必须指定 encoding='utf-8',防止乱码
三、with 语句推荐写法
自动帮我们关闭文件,安全简洁,工作必用
with open("test.txt", "r", encoding="utf-8") as f:
# 在这里读写文件
pass
四、读取文件三种方式
- read () 一次性读取全部内容
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
- readline () 一次读一行
with open("test.txt", "r", encoding="utf-8") as f:
line1 = f.readline()
line2 = f.readline()
print(line1)
print(line2)
- readlines () 读取所有行,返回列表
with open("test.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(lines)
# 遍历每一行
for line in lines:
print(line.strip()) # strip() 去掉换行和空格
五、写入文件
- w 模式:覆盖写入
原有内容会被清空,重新写
with open("test.txt", "w", encoding="utf-8") as f:
f.write("大家好,我是小樊童鞋\n")
f.write("Python 文件操作学习笔记\n")
- a 模式:追加写入
在文件末尾新增内容,不覆盖旧内容
with open("test.txt", "a", encoding="utf-8") as f:
f.write("这一行是追加的内容\n")
- writelines () 写入多行列表
lines = ["第一行内容\n", "第二行内容\n", "第三行内容\n"]
with open("test.txt", "w", encoding="utf-8") as f:
f.writelines(lines)
六、读写二进制文件(图片 / 视频 / 音乐)
不用写 encoding,加 b 模式
# 读取图片
with open("pic.jpg", "rb") as f:
data = f.read()
# 复制保存为新图片
with open("pic_copy.jpg", "wb") as f:
f.write(data)
常用于:文件复制、爬虫下载图片、读取非文本文件
七、常用文件路径
- 相对路径
和代码同目录下,直接写文件名:
open("test.txt", "r", encoding="utf-8")
- 绝对路径
完整路径,Windows 注意斜杠:
# 方式1 双反斜杠
open("C:\\Users\\xxx\\Desktop\\test.txt", "r", encoding="utf-8")
# 方式2 原始字符串(推荐)
open(r"C:\Users\xxx\Desktop\test.txt", "r", encoding="utf-8")
八、文件常见异常处理
防止文件不存在、权限不足崩溃
try:
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
except FileNotFoundError:
print("文件不存在!")
except Exception as e:
print("文件读取出错:", e)
九、本章小结
文件操作优先用 with + open,自动关文件
r 读、w 覆盖写、a 追加写
中文文件必须加 encoding="utf-8"
read() / readline() / readlines() 三种读取方式
二进制文件用 rb / wb,不用编码
可配合 try-except 捕获文件异常
十、练习题
- 创建一个程序,读取用户输入的文本并写入文件。
- 实现一个文件复制功能,支持文本和二进制文件。
- 编写一个日志记录器,使用 a 模式追加写入日志文件。
十一、进阶内容
- 使用 os 模块进行文件和目录操作,如 os.path.exists(), os.mkdir()。
- 使用 shutil 模块进行高级文件操作,如 shutil.copy(), shutil.move()。
- 处理大文件时,使用分块读取以节省内存。
十二、常见错误
- 忘记关闭文件:使用 with 语句避免。
- 编码问题:始终指定 encoding。
- 路径错误:使用 os.path.join() 构建路径。
浙公网安备 33010602011771号