请解释以下内容:
def feed(data):
import os
print "DATA LEN: %s" % len(data)
f = open("copy", "w")
f.write(data)
f.close()
print "FILE LEN: %s" % os.stat("copy").st_size
t = tempfile.NamedTemporaryFile()
t.write(data)
print "TEMP LEN: %s" % os.stat(t.name).st_size
t.close()
feed(x)
DATA LEN: 11004
FILE LEN: 11004
TEMP LEN: 8192
为什么会有差异,我可以修复温度吗?结局似乎被削减了。
测试2.6,2.7
答案 0 :(得分:4)
我认为你正在进入内部写缓冲区大小。在第一种情况下,在调用.close()
之前,os.stat
文件会有效地刷新内部缓冲区。在第二种情况下(使用tempfile
),当您致电os.stat
时,您仍然可以打开文件。由于文件仍处于打开状态,因此有些内容可能仍会在内存中缓冲,直到您flush
显式或关闭它为止。