在Python中打开文件时如何指定缓冲区大小?
如果看一下open-open(name[,mode[,buffering]])的函数定义,您会发现在Python2中它需要3个参数,第三个是缓冲。可选的buffering参数指定文件所需的缓冲区大小:0表示未缓冲,1表示行缓冲,任何其他正值表示使用(大约)该大小(以字节为单位)的缓冲区。负缓冲意味着使用系统默认值,通常对tty设备使用行缓冲,而对于其他文件则使用完全缓冲。如果省略,则使用系统默认值。
例如,如果要打开缓冲区大小为128字节的文件,则可以这样打开文件-
>>> open('my_file', 'r+', 128)
在Python3中,open的函数定义为:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)。buffering是用于设置缓冲策略的可选整数。传递0以关闭缓冲(仅在二进制模式下允许),传递1以选择行缓冲(仅在文本模式下可用),并传递大于1的整数来指示固定大小的块缓冲区的字节大小。当没有给出缓冲参数时,默认缓冲策略如下:
二进制文件以固定大小的块缓冲;缓冲区的大小是通过试探法来确定底层设备的“块大小”,然后再使用io.DEFAULT_BUFFER_SIZE来选择的。
“交互式”文本文件(为其isatty()
返回True的文件)使用行缓冲。其他文本文件将上述策略用于二进制文件。
Python3的示例与Python2相同。例如,如果您要打开缓冲区大小为128字节的文件,则可以这样打开文件-
>>> open('my_file', 'r+', 128)