Python-文件阅读(open函数)

mode是一个可选的字符串,它指定文件的模式已打开。它默认为“r”,这意味着可以在文本中阅读模式。其他常用值是“w”用于写入(如果它已经存在),用于创建和写入新文件的“x”,以及'a'表示附加(在某些Unix系统上,表示所有写入追加到文件末尾,而不考虑当前的查找位置)。在文本模式下,如果未指定编码,则使用的编码为平台从属关系:locale.getpreferredencoding(False)调用以获取当前区域设置编码。(对于读写原始字节,使用二进制模式和未指定编码。)可用模式包括:


Character Meaning     # 文字意义

r open for reading (default) 打开供阅读(默认)
w open for writing, truncating the file first 打开进行写入,先截断文件
x create a new file and open it for writing 创建一个新文件并打开它进行写入
a open for writing, appending to the end of the file if it exists 打开进行写入,如果文件存在,则将其附加到文件末尾
b binary mode 二进制模式
t text mode (default) 文本模式(默认)
+ open a disk file for updating (reading and writing) 打开一个文件进行更新(可读可写)。
U universal newline mode (deprecated) 通用换行模式(已弃用)

 



默认模式为“rt”(打开以阅读文本)。对于二进制随机在b+0模式下打开文件,而b+w'则会截断文件'r+b'打开文件而不截断。'x'模式意味着'w'和如果文件已存在,则引发'FileExistsError'。

Python区分以二进制和文本模式打开的文件,即使在底层操作系统没有的情况下二进制模式(将“b”附加到模式参数)将内容返回为不进行任何解码的bytes对象。在文本模式下(默认,或't'附加到mode参数之后),文件的内容是以字符串形式返回,首先使用平台相关编码或使用指定的编码(如果给定)。

'U'模式已弃用,将在将来的版本中引发异常巨蟒。它在python3中没有效果。使用换行符控制通用换行模式。

缓冲是一个可选整数,用于设置缓冲策略。传递0关闭缓冲(仅在二进制模式下允许),1选择行缓冲(仅在文本模式下可用),整数>1表示固定大小块缓冲区的大小。当没有缓冲参数时给定,默认缓冲策略的工作方式如下:

* 二进制文件以固定大小的块进行缓冲;缓冲区的大小使用启发式方法来确定底层设备的'块头大小'和倒下`io.DEFAULT U BUFFER U大小`.在许多系统上,缓冲区通常为4096或8192字节长。

* '交互式'文本文件(isatty()返回True的文件)使用线路缓冲。其他文本文件使用上述策略对于二进制文件。

 

编码是用于解码或编码的编码的名称文件。这只能在文本模式下使用。默认编码是依赖于平台,但是Python支持的任何编码都可以通过。有关支持的编码列表,请参阅编解码器模块。

errors是一个可选字符串,指定如何对错误进行编码不应在二进制模式下使用此参数。通过"strict"在存在编码错误时引发ValueError异常(默认的“无”具有相同的效果),或传递"ignore"以忽略错误。(请注意,忽略编码错误可能会导致数据丢失。)请参阅文档编解码器.寄存器或者跑“救命”(编解码器。编解码器)'允许的编码错误字符串的列表。

newline控制通用换行的工作方式(它只适用于文本模式)。它可以是None、'\n'、'\r'和'\r\n'。它的工作原理是跟随:

* 输入时,如果newline为None,则通用newlines模式为启用。输入中的行可以以'\n'、'\r'或'\r\n'结尾,并且在返回到来电者。如果为“”,则启用通用换行模式,但结尾未经翻译返回给调用者。如果它有其他合法值、输入行仅由给定的字符串,并且行尾返回给调用方未经翻译。

* 在输出时,如果newline为None,则写入的任何'\n'字符都是转换为系统默认行分隔符,操作系统linesep. 如果换行符为“”或'\n',不进行转换。如果newline是在其他合法值中,任何写入的'\n'字符都会被翻译到给定的字符串。


如果closefd为False,则底层文件描述符将保持打开状态当文件关闭时。当给定文件名时,这不起作用在这种情况下一定是真的。

通过传递可调用的*opener*,可以使用自定义的开场白。这个文件对象的底层文件描述符由使用(*file*,*flags*)调用*opener*。*opener*必须返回一个open文件描述符(传递操作系统打开as*开场白*带来功能性类似于不及格)。

open()返回一个文件对象,其类型取决于模式,并且通过它进行标准的文件操作,如读写被执行。当open()用于以文本模式(“w”)打开文件时,'r'、'wt'、'rt'等),它返回一个TextIOWrapper。用于打开时在二进制模式下的文件,返回的类不同:在read binary中模式,它返回一个BufferedReader;在write binary和append binary中模式,它返回一个BufferedWriter,在读/写模式下,它返回缓冲区。

也可以使用字符串或bytearray作为两者的文件阅读和写作。对于字符串,StringIO可以像文件一样使用以文本模式打开,对于字节,字节可以像文件一样使用以二进制模式打开。

posted @ 2020-07-20 18:54  马ある某  阅读(235)  评论(0编辑  收藏  举报