open() 打开文件
最后更新:2026-09-22
open() 打开文件
open() 打开文件,返回 file 对象。强烈建议用 with 语句管理。
| 分类 | 内置函数 |
|---|---|
| 类型 | 内置函数 |
| Python 版本 | all |
📝 语法
open(file, mode='r', ...)
⚙️ 参数
| file 必选 | 文件路径(str / bytes / os.PathLike)或文件描述符整数。 |
|---|---|
| mode 可选 | 打开模式:'r'/'w'/'a'/'x',可组合 'b'、'+' 等。(默认值:'r') |
| buffering 可选 | 缓冲策略:0 不缓冲、1 行缓冲、大于 1 为缓冲区字节数。(默认值:-1) |
| encoding 可选 | 文本编码(如 'utf-8');默认使用平台编码。(默认值:None) |
| errors 可选 | 编码错误处理方式,如 'strict'/'ignore'/'replace'。(默认值:None) |
| newline 可选 | 换行符处理方式;None 表示启用通用换行模式。(默认值:None) |
| closefd 可选 | file 为文件描述符时,关闭文件是否同时关闭该描述符。(默认值:True) |
| opener 可选 | 自定义打开器,一个返回文件描述符的可调用对象。(默认值:None) |
返回值:返回文件对象:文本模式为 TextIOWrapper,二进制模式为 BufferedIOBase 的子类。
💥 异常
OSError— 文件不存在、无权限等打开失败时抛出(含 FileNotFoundError 等子类)。ValueError— mode 非法或 mode 与 encoding 组合冲突时抛出。
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
hello
💡 提示 用 with 自动关闭文件;指定 encoding 避免平台默认编码陷阱。
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Q不写 with 打开文件有什么风险?
A文件可能不自动关闭,句柄泄漏、写入内容未落盘;用 with open(...) as f: 会自动关闭,即使中途抛异常。
Q为什么读中文文件要传 encoding='utf-8'?
A不传则用平台默认编码(Windows 中文系统是 gbk),与 utf-8 文件不一致会抛 UnicodeDecodeError 或产生乱码;读写都建议显式指定 encoding。
Qopen() 各模式 'r'/'w'/'a'/'x' 的区别?
A'r' 只读(默认,文件不存在抛 FileNotFoundError)、'w' 写入并清空原内容(不存在则创建)、'a' 追加、'x' 排他创建(文件已存在抛 FileExistsError)。
Q二进制文件怎么打开?
Amode 加 'b':open('img.png', 'rb') 读字节、open('img.png', 'wb') 写字节;二进制模式不能传 encoding 参数。