Python file.write()需要两次尝试?

Non*_*biz 2 python file-io

不知道如何解释这一点,任何帮助将不胜感激!

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
Run Code Online (Sandbox Code Playgroud)

谢谢!

aar*_*ing 10

如果您打开该thumb文件,您将看到有一个完整副本和您正在其中写入的数据的部分副本.

刷新文件而不是第二次写入.

temp.flush()
Run Code Online (Sandbox Code Playgroud)

该文件第一次没有写入,因为内容不够大,无法填充缓冲区.第二次写入溢出缓冲区,因此写入缓冲区的数据.

正如Cameron在他的回答中指出的那样,当你关闭文件时,缓冲区会自动刷新.如果你想出于某种原因让它保持打开状态(事实上这对你来说似乎是一个问题),那么你就可以调用flush并立即写入数据.