【发布时间】:2014-02-21 11:04:13
【问题描述】:
请解释以下内容:
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 上测试
【问题讨论】:
-
我可以在文档中发现的唯一区别似乎是,在 Windows 上,您必须附加一个“b”才能打开,因为 Windows 区分二进制和非二进制,并且 tempfile 自动调用“w +b"。
-
如果你在
stat之前.flush()(或.close())会发生什么? -
宾果游戏!谢谢你。 .flush() 解决了这个问题。 .close() 将删除临时文件。如果您愿意说明,我会接受。