我试图理解的缓冲参数io.open() https://docs.python.org/2/library/functions.html#openPython 2.7 中的方法。
我在Python解释器中执行:
import utils
buffer_size = 4000
file = open('test.txt','w', buffer_size)
file.write('\n'.join(map(str, range(10000))))
然后我看看test.txt
文件以查看写入了多少行,即使我没有调用file.close()
然而,并没有做任何手册file.flush()
myself.
If buffer_size = 4000
,我看到写了 9822 行。然而,buffer_size = 8192
,我看到写了 8414 行。
我在 Windows 7 SP1 x64 Ultimate (Python 2.7.10 x64) 和 Kubuntu 14.10 Plasma 4 (Python 2.7.10 x64) 中都会出现此行为。我不明白这些数字(9822 和 8414)从何而来。
引用自文档 https://docs.python.org/2/library/functions.html#open(重点是我的):
可选的缓冲参数指定文件所需的缓冲区
size: 0 表示无缓冲,1 表示行缓冲,任何其他积极的
value 表示使用(大约)该大小(以字节为单位)的缓冲区。 A
负缓冲意味着使用系统默认值,通常是
对 tty 设备进行行缓冲,对其他文件进行完全缓冲。如果
省略,则使用系统默认值。 [2]
即:缓冲区大小不能保证是您作为参数传递的大小。无法预测有多少缓冲区正在使用中以及有多少缓冲区已写入磁盘,因为在这两种情况下写入都会溢出缓冲区,并且缓冲区大小取决于机器。
由于您没有调用显式刷新,因此缓冲区的一部分已被刷新,而另一部分仍在等待填充,然后再刷新到磁盘。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)