国际访客建议访问 Primers 编程伙伴 国际版站点 > Python 教程 > open 以获得更好的体验。

# Python 的内置函数 open

请查看 Python 内建函数列表 了解更多相关 API。

说明:打开文件。

# 函数说明

def open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None):
    '''
    打开文件

    :param file: 文件路径或描述符
    :param mode: 模式
    :param buffering: 缓冲策略
    :param encoding: 编码格式,默认使用本地编码
    :param errors: 指定如何处理编解码错误
    :param newline: 如何解析换行符
    :param closefd: 如果 file 时文件描述符,此参数决定关闭文件流时是否自动关闭描述符
    :param opener: 自定义开启器
    :return: 文件对象
    '''

!subtitle:说明

打开文件。

如果该文件不能被打开,则产生 OSError 异常。

!subtitle:参数

  • file - 文件路径或描述符

  • mode - 打开的模式

  • buffering - 缓冲策略

  • encoding - 文本模式下指定编码,默认为 None,使用操作系统的编码

  • errors - 指定如何处理编解码错误,默认为 None

  • newline - 指定如何处理换行符,默认为 None

  • closefd - 如果 file 时文件描述符,此参数决定关闭文件流时是否自动关闭描述符,默认为 True

  • opener - 自定义开启器,通过此函数打开文件,默认为 None

!subtitle:返回值

用于读写文件的文件流。

# 文件的打开模式

  • r 表示读,如果文件不存在则会报错

  • w 表示写,如果文件已经存在则会清空原文件

  • a 表示追加,打开文件时偏移量在文件末尾

  • + 表示读写

  • b 表示二进制模式,常用于非文本文件,例如图片、可执行文件等

模式 说明 文件存在 文件不存在 初始偏移 返回值类型
r 只读 打开文件 报错 FileNotFoundError 文件开头 str
w 只写 清空文件 新建文件 文件开头 str
a 追加写 打开文件 新建文件 文件末尾 str
r+ 读写 打开文件 新建文件 文件开头 str
w+ 读写 清空文件 新建文件 文件开头 str
a+ 追加读写 打开文件 新建文件 文件末尾 str
rb 只读 打开文件 报错 FileNotFoundError 文件开头 byets
wb 只写 清空文件 新建文件 文件开头 byets
ab 追加写 打开文件 新建文件 文件末尾 byets
rb+ 读写 打开文件 报错 FileNotFoundError 文件开头 byets
wb+ 读写 清空文件 新建文件 文件开头 byets
ab+ 追加读写 打开文件 新建文件 文件末尾 byets

# 缓冲策略

  • 二进制模式下,可以传入 0 来关闭缓冲区

  • 二进制模式下,可以传入一个大于 1 的整数表示缓冲区的字节大小

  • 文本模式下,可以传入 1,将缓冲策略设为 行缓冲

# 编码错误的处理方式

  • None'strict' - 编码错误时产生 ValueError 异常

  • 'ignore' - 忽略错误,通常会丢失数据

  • 'replace' - 使用 '?' 替换有错误的位置

  • 'surrogateescape' - 使用 U+DC08U+DCFF 之间的值表示不正确的字节

  • 'xmlcharrefreplace' - 编码格式不支持的字符将被替换为相应的 XML 字符引用,仅在写入时可用

  • 'backslashreplace' - 使用反斜杠转义表示错误的数据

  • 'namereplace' - 使用 \N{...} 转义表示错误的数据

# 换行符的处理

  • None - 采取通用换行模式,'\n''\r''\r\n' 都会被替换为 '\n' 返回

  • '' - 采取通用换行模式,换行符不会被替换,而是直接返回

  • '\n' - 仅在 '\n' 换行

  • '\r' - 仅在 '\r' 换行

  • '\r\n' - 仅在 '\r\n' 换行

# 示例

运行示例

# __file__ 是一个特殊的内置变量,表示当前 Python 文件的路径
with open(__file__, encoding='utf-8') as fp:    
    print(fp)               # 打印文件对象
    print(fp.read())        # 读取文件内容并打印

# 推荐阅读

本文 更新于: 2025-11-27 09:37:59 创建于: 2025-11-27 09:37:59