在 Python 中,文件访问是常见的操作,主要通过内置的 open() 函数实现,配合不同的模式和方法可以完成读取、写入、追加等操作。以下是关于 Python 文件访问的详细说明:
一、基本语法:open() 函数
open() 函数用于打开文件并返回文件对象,基本语法:
file_object = open(file_path, mode, encoding)
file_path:文件路径(绝对路径或相对路径)mode:打开模式(决定文件操作类型)encoding:编码格式(如utf-8,文本模式下使用)
二、常用文件打开模式
| 模式 | 含义 | 特点 |
|---|---|---|
r | 只读模式(默认) | 文件必须存在,否则报错 |
w | 写入模式 | 若文件存在则清空内容,不存在则创建 |
a | 追加模式 | 在文件末尾添加内容,不存在则创建 |
r+ | 读写模式 | 可读写,文件必须存在 |
w+ | 读写模式 | 先清空再读写,不存在则创建 |
a+ | 读写模式 | 可读写,新内容追加在末尾 |
b | 二进制模式 | 用于非文本文件(如图片、音频),需与上述模式组合(如 rb、wb) |
三、文件操作的两种方式
1. 手动管理(需手动关闭文件)
# 打开文件
file = open("test.txt", "r", encoding="utf-8")
# 操作文件
content = file.read()
print(content)
# 关闭文件(必须执行,否则可能导致资源泄露)
file.close()
2. 上下文管理器(推荐,自动关闭文件)
使用 with 语句,无需手动调用 close(),代码块执行完毕后自动关闭文件:
with open("test.txt", "r", encoding="utf-8") as file:
content = file.read() # 读取内容
print(content)
四、常用文件操作方法
1. 读取文件
-
read(size):读取指定字节数的内容,默认读取全部with open("test.txt", "r") as f: print(f.read(10)) # 读取前10个字符 -
readline():读取一行内容with open("test.txt", "r") as f: print(f.readline()) # 读取第一行 -
readlines():读取所有行,返回列表(每行作为元素)with open("test.txt", "r") as f: lines = f.readlines() for line in lines: print(line) -
直接迭代文件对象(高效读取大文件)
with open("test.txt", "r") as f: for line in f: # 逐行迭代,内存友好 print(line)
2. 写入文件
-
write(content):写入字符串with open("test.txt", "w") as f: f.write("Hello, Python!\n") # 写入内容,\n 表示换行 -
writelines(iterable):写入可迭代对象(如列表)lines = ["第一行\n", "第二行\n", "第三行\n"] with open("test.txt", "w") as f: f.writelines(lines) # 批量写入
3. 其他常用方法
seek(offset):移动文件指针到指定位置(用于随机访问)tell():返回当前文件指针位置flush():刷新缓冲区,将内容立即写入文件
五、处理二进制文件
对于图片、音频等二进制文件,需使用 b 模式:
# 读取图片
with open("image.jpg", "rb") as f:
data = f.read() # 读取二进制数据
# 写入图片
with open("copy_image.jpg", "wb") as f:
f.write(data) # 写入二进制数据
六、注意事项
- 编码问题:文本文件需指定正确编码(如
encoding="utf-8"),否则可能出现乱码 - 路径问题:Windows 使用
\(需转义为\\或用原始字符串r""),macOS/Linux 使用/ - 大文件处理:优先使用逐行迭代(
for line in file),避免一次性加载全部内容导致内存占用过高 - 异常处理:可结合
try-except捕获文件操作中的错误(如文件不存在、权限问题)
try:
with open("test.txt", "r") as f:
print(f.read())
except FileNotFoundError:
print("文件不存在")
except Exception as e:
print(f"发生错误:{e}")
通过以上方法,可以灵活地在 Python 中进行文件的读取、写入、修改等操作,根据实际需求选择合适的模式和方法即可。
1879

被折叠的 条评论
为什么被折叠?



