本系列将会陆续整理分享一些的Python内置函数。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_built-in_functions
open(file, mode='r', buffering=-1,encoding=None, errors=None,newline=None, closefd=True,opener=None)
-
file:文件的路径或文件描述符:
-
路径对象:可以是绝对路径或相对路径; -
整型的文件描述符:一个已经打开文件的整数标识符,通常由底层操作系统接口返回。如果将文件描述符传递给open()函数,Python会基于这个文件描述符创建一个文件对象。当这个通过open()返回的文件对象被关闭时,除非closefd参数被设置为False,否则这个文件描述符也会被关闭。
-
mode:可选参数,用于指定打开文件的模式,常用的模式有:
-
'r':只读模式,默认值。打开文件用于读取文本内容。文件必须存在,否则会抛出 FileNotFoundError。等同于 ‘rt’(读取文本)。 -
'w':只写模式。打开文件用于写入文本内容。如果文件已存在,会覆盖原有内容;如果文件不存在,会创建一个新文件。等同于 ‘wt’(写入文本)。 -
'x':独占创建模式。打开文件用于写入文本内容。如果文件已存在,会抛出 FileExistsError;如果文件不存在,会创建一个新文件。等同于 ‘xt’(独占创建文本)。 -
'a':追加模式。打开文件用于在文件末尾追加文本内容。如果文件不存在,会创建一个新文件。在某些 Unix 系统中,即使当前读写指针不在文件末尾,写入的内容也会追加到文件末尾。等同于 ‘at’(追加文本)。 -
't':文本模式。这是默认模式。以文本形式打开文件,读写时会进行编码转换。可以与‘r/w/x/a’等模式组合使用,例如‘rt/wt/xt/at’。 -
'b':二进制模式。以二进制形式打开文件,读写时不会进行编码转换。可以与 ‘r/w/x/a’ 等模式组合使用,例如 ‘rb/wb/xb/ab’。 -
'+':更新模式。可以同时进行读写操作。可以与 ‘r’、‘w’、‘a’ 等模式组合使用,例如,‘r+’:读写模式,文件必须存在,不会覆盖原有内容;‘w+’:读写模式,会覆盖原有文件内容;‘a+’:读写模式,写入内容会追加到文件末尾。
-
buffering:可选参数,用于设置缓冲策略。取值有:
-
-1:默认值,表示使用系统默认的缓冲策略。对于文本文件,通常会根据文件大小和系统情况进行缓冲;对于二进制文件,通常会使用固定大小的缓冲区。 -
0:表示不进行缓冲,每次读写操作都会直接与文件系统交互,但这种方式效率较低,一般不推荐使用。 -
大于1的整数:表示使用固定大小的缓冲区,单位为字节。例如 buffering=1024 表示使用 1024 字节的缓冲区。
-
encoding:用于指定文件的编码方式。
-
errors:用于指定在编码和解码过程中如何处理错误。
-
‘strict’:如果遇到编码错误,会抛出 ValueError 异常。这是默认值,None 也有相同的效果。 -
‘ignore’:忽略错误。注意,忽略编码错误可能会导致数据丢失。 -
‘replace’:在遇到格式错误的数据时,插入一个替换标记(如 ?)。 -
‘surrogateescape‘:将任何错误的字节表示为低代理码单元(从 U+DC80 到 U+DCFF)。这些代理码单元在写入数据时,使用 surrogateescape 错误处理方式会转换回相同的字节。这在处理未知编码的文件时非常有用。 -
‘xmlcharrefreplace‘:仅在写入文件时支持。不支持的字符会被替换为相应的 XML 字符引用 &#nnn;。 -
‘backslashreplace’:将格式错误的数据替换为 Python 的反斜杠转义序列。 -
‘namereplace’:仅在写入文件时支持。不支持的字符会被替换为 N{…} 转义序列。
-
newline:用于指定如何处理文件中的换行符。
-
None:启用通用换行模式(universal newlines mode)。输入中的行可以以 n、r 或 rn 结尾,这些换行符会被翻译成 n 后返回给调用者。 -
”:启用通用换行模式,但换行符不会被翻译,直接返回给调用者。 -
‘n’:输入中的行仅以 n 结尾,换行符不会被翻译,直接返回给调用者。 -
‘r’:输入中的行仅以 r 结尾,换行符不会被翻译,直接返回给调用者。 -
‘rn’:输入中的行仅以 rn 结尾,换行符不会被翻译,直接返回给调用者。
-
closefd:用于指定文件描述符在文件对象关闭时的行为。
-
True(默认值):当通过 open() 函数返回的文件对象被关闭时,文件描述符也会被自动关闭。这意味着你不需要再手动调用 os.close(fd) 来关闭文件描述符。 -
False:当通过 open() 函数返回的文件对象被关闭时,文件描述符不会被关闭。你需要在适当的时候手动调用 os.close(fd) 来关闭文件描述符,否则可能会导致资源泄露。
-
opener:一个可调用对象,用于自定义打开文件的方式。
-
read(size=-1):读取文件内容。size 参数指定读取的字符数(文本模式)或字节数(二进制模式),默认值 -1 表示读取整个文件。 -
readline(size=-1):读取文件中的一行内容。size 参数指定读取的最大字符数(文本模式)或字节数(二进制模式),默认值 -1 表示读取整行。 -
readlines():读取文件中所有行的内容,返回一个包含每行内容的列表。 -
write(string):写入字符串(文本模式)或字节序列(二进制模式)到文件中。 -
writelines(lines):写入一个字符串列表(文本模式)或字节序列列表(二进制模式)到文件中,不会自动添加换行符。 -
seek(offset, whence=0):移动文件读写指针的位置。offset 参数指定偏移量,whence 参数指定偏移的基准位置,取值有 0(文件开头,默认值)、1(当前位置)、2(文件末尾)。 -
tell():返回文件读写指针的当前位置。 -
close():关闭文件对象,释放系统资源。
下面是一些使用 open() 函数的示例:
使用open()函数时,建议配合with语句一起使用。with语句可以自动管理文件的打开和关闭,即使在文件操作过程中发生异常,也能确保文件被正确关闭,避免资源泄露。
# 以只读模式打开文件
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
# 以写模式打开文件,覆盖原有内容
with open('example.txt', 'w', encoding='utf-8') as file:
file.write('Hello, World!')
# 以追加模式打开文件,追加内容
with open('example.txt', 'a', encoding='utf-8') as file:
file.write('nThis is a new line.')
# 以文本模式读取文件,指定换行符处理方式
with open('example.txt', 'r', encoding='utf-8', newline='') as file:
lines = file.readlines()
for line in lines:
print(line)
# 创建一个二进制文件并写入数据
with open('example.bin', 'wb') as binary_file:
# 写入一个字符串(但需要先将其编码为二进制数据)
# 假设我们想要写入字符串 "hello",并使用 UTF-8 编码
binary_file.write(b'Hello, World!') # UTF-8 编码的 "hello" 是 b'hello'
# 以二进制模式读取文件
with open('example.bin', 'rb') as file:
binary_data = file.read()
print(binary_data)


本篇文章来源于微信公众号: 码农设计师
