说明:打开文件。
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+DC08 至 U+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()) # 读取文件内容并打印