Python 文件系统操作与 IO 接口详解
在 Python 中,文件对象是处理磁盘文件及抽象输入输出流的核心接口。通过内置的 open() 函数,开发者可以获取文件句柄并进行各种数据交互。推荐使用上下文管理器(with 语句)来操作文件,这样可以确保即使程序抛出异常,系统资源也能被及时释放。
文件打开模式与编码处理
open(filename, mode='r', encoding=None) 是最常用的文件操作入口。以下是常见的操作模式:
r/rb:只读模式,分别为文本和二进制读取。w/wb:只写模式,若文件存在则清空,不存在则创建。a/ab:追加模式,在文件末尾写入。r+/w+/a+:支持同时读写的组合模式。x:排他性创建,若文件已存在则报错。
在二进制模式(b)下,必须处理字节(bytes)数据,不能指定 encoding 参数。例如:
# 文本与字节转换
data = "示例文本"
raw_bytes = data.encode('utf-8')
recovered_str = raw_bytes.decode('utf-8')
# 安全写入
with open('data.bin', 'wb') as stream:
stream.write(raw_bytes)
核心文件方法
文件对象提供了丰富的 API 用于数据交互与指针控制:
- 输入:
read(size)读取指定字节,readline()读取一行,readlines()返回所有行的列表。 - 输出:
write(data)写入字符串或字节,writelines(list)批量写入序列。 - 移动与截断:
seek(offset, whence)移动指针(0:文件头,1:当前位置,2:文件尾),truncate(size)将文件修剪至指定大小。 - 状态管理:
flush()强制刷新缓冲区,fileno()获取系统底层文件描述符,close()显式关闭文件。
文件系统与路径操作
Python 通过 os 和 os.path 模块提供了强大的操作系统接口,用于处理目录、权限和路径分析:
- 目录操作:
os.mkdir()创建目录,os.listdir()列出内容,os.chdir()切换工作目录。 - 路径处理:
os.path.join()拼接路径,os.path.split()分离路径与文件名,os.path.exists()检查路径有效性。 - 元数据查询:
os.path.getsize()获取大小,os.path.getmtime()获取修改时间。
常见操作实践
# 迭代式读取大文件(节省内存)
with open('source.txt', 'r', encoding='utf-8') as src:
for line in src:
process(line)
# 多文件同时处理
with open('in.txt', 'r') as r_src, open('out.txt', 'w') as w_dst:
for content in r_src:
w_dst.write(content.replace("target", "replacement"))
此外,Python 标准库还包含了 shutil(高级文件处理)、csv(CSV读写)、zipfile(归档压缩)等专用模块,可以根据具体业务场景选择合适的工具链。