Python open() 函数详解
open() 是 Python 的核心文件操作函数,用于打开文件并返回文件对象,支持多种读写模式与编码处理。其核心语法如下:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
核心功能与参数解析
- 基础文件操作
读取文本文件
with open('data.txt', 'r') as f:
content = f.read()
写入二进制文件
with open('image.png', 'wb') as f:
f.write(b'\x89PNG\r\n\x1a\n...')
关键参数说明
| 参数 | 默认值 | 功能说明 |
|------|--------|----------|
|file| - | 文件路径(字符串或字节对象) |
|mode|'r'| 文件模式(详见下表) |
|encoding|None| 文本编码(如'utf-8') |
|errors|None| 编码错误处理(如'ignore') |
|newline|None| 换行符处理('\n','\r\n') |文件模式详解
| 模式 | 描述 | 文件存在 | 文件不存在 |
|------|------|----------|------------|
|'r'| 只读 | ✅ 打开 | ❌ 报错 |
|'w'| 写入 | ❌ 清空 | ✅ 创建 |
|'a'| 追加 | ✅ 续写 | ✅ 创建 |
|'x'| 排他创建 | ❌ 报错 | ✅ 创建 |
|'b'| 二进制模式 | - | - |
|'t'| 文本模式(默认) | - | - |
|'+'| 读写模式 | - | - |
示例:
'rb+'表示二进制读写模式
典型应用场景
- 安全文件读写(推荐)
with open('log.txt', 'a', encoding='utf-8') as f:
f.write(f"{datetime.now()}: 操作记录\n")
- 大文件逐行处理
with open('large_file.csv', 'r') as f:
for line in f: 内存高效
process(line)
- 二进制数据处理
复制图片文件
with open('source.jpg', 'rb') as src, open('copy.jpg', 'wb') as dst:
dst.write(src.read())
注意事项
编码问题
文本文件必须指定编码(如encoding='utf-8'),否则使用系统默认编码可能乱码资源管理
始终使用with语句确保文件关闭,避免手动调用f.close()-
路径处理
跨平台路径建议使用pathlib模块:from pathlib import Path Path('data/docs').mkdir(parents=True, exist_ok=True) -
性能优化
场景 优化方案 大文件读取 分块处理 f.read(4096)高频小文件 调整缓冲大小 buffering=1024
⚠️ 警告:
'w'模式会清空已有文件内容- 避免同时打开过多文件(操作系统限制)