不确定如何解释这一点,任何帮助将不胜感激!
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib2, pynotify, tempfile, os
>>> opener = urllib2.build_opener()
>>> page = opener.open('http://img.youtube.com/vi/RLGJU_xUVTs/1.jpg')
>>> thumb = page.read()
>>> temp = tempfile.NamedTemporaryFile(suffix='.jpg')
>>> temp.write(thumb)
>>> os.path.getsize(temp.name)
0
>>> temp.write(thumb)
>>> os.path.getsize(temp.name)
4096
谢谢!
答案 0 :(得分:10)
如果您打开thumb
文件,您会看到有一个完整副本和您正在其中写入的数据的部分副本。
刷新文件而不是第二次写入。
temp.flush()
文件第一次没有写入,因为内容不够大,无法填充缓冲区。第二次写入溢出缓冲区,因此写入缓冲区的数据。
Cameron在回答中指出,关闭文件时会自动刷新缓冲区。如果你想出于某种原因让它保持打开(事实上这对你来说似乎表明你这么做了),那么你可以调用flush
并立即写入数据。
答案 1 :(得分:2)
在检查磁盘上的大小之前,您没有在文件对象上调用flush()
或close()
- 只有在写入一定量的数据后才会自动刷新内部缓冲区(这可以避免在进行多次写入时过多昂贵的磁盘访问。)