#Python 的内置函数 open
说明:打开文件。
#函数说明
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: 文件对象
'''
说明
打开文件。
如果该文件不能被打开,则产生 OSError
异常。
参数
file
- 文件路径或描述符mode
- 打开的模式buffering
- 缓冲策略encoding
- 文本模式下指定编码,默认为None
,使用操作系统的编码errors
- 指定如何处理编解码错误,默认为None
newline
- 指定如何处理换行符,默认为None
closefd
- 如果 file 时文件描述符,此参数决定关闭文件流时是否自动关闭描述符,默认为True
opener
- 自定义开启器,通过此函数打开文件,默认为None
返回值
用于读写文件的文件流。
#文件的打开模式
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+DC08
至U+DCFF
之间的值表示不正确的字节'xmlcharrefreplace'
- 编码格式不支持的字符将被替换为相应的 XML 字符引用,仅在写入时可用'backslashreplace'
- 使用反斜杠转义表示错误的数据'namereplace'
- 使用\N{...}
转义表示错误的数据
#换行符的处理
None
- 采取通用换行模式,'\n'
,'\r'
,'\r\n'
都会被替换为'\n'
返回''
- 采取通用换行模式,换行符不会被替换,而是之间返回'\n'
- 仅在'\n'
换行'\r'
- 仅在'\r'
换行'\r\n'
- 仅在'\r\n'
换行
#示例
with open(__file__) as fp:
print(fp)