write和tempfile.write之间的区别

时间:2014-02-21 11:04:13

标签: python file

请解释以下内容:

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

1 个答案:

答案 0 :(得分:4)

我认为你正在进入内部写缓冲区大小。在第一种情况下,在调用.close()之前,os.stat文件会有效地刷新内部缓冲区。在第二种情况下(使用tempfile),当您致电os.stat时,您仍然可以打开文件。由于文件仍处于打开状态,因此有些内容可能仍会在内存中缓冲,直到您flush显式或关闭它为止。