天天看点

python tempfile模块用不了_Python tempfile:坏了还是我做错了?

对于一个小python脚本,我希望使用tempfile模块的临时文件。不知何故,它没有给出预期的行为,我不知道我做错了什么,或者这是一个bug:Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import tempfile

>>> tmp = tempfile.TemporaryFile()

>>> tmp.read()

''

>>> tmp.write('test')

>>> tmp.read()

'P\xf6D\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ [ommitted]'

或者,我只尝试使用文本模式,但行为仍然很奇怪:

^{pr2}$

感谢任何帮助!在

其他信息:在Windows7Enterprisex64计算机上运行的当前PythonXY发行版中的Python2.7.2(32位)。在一个测试运行中,python在D:\temp\myusername下的临时目录中创建了临时文件名“tmpvyocxj”,其他几个python进程正在运行。输入的命令,我没有尝试在脚本中复制它。在没有其他python进程运行的情况下,行为没有改变。在

更新:

这种行为不仅限于tempfile模块,也适用于普通的文件.read()和文件.写入()操作。根据CPython的说法,这两个函数都只调用底层libc fread()例程。在C标准中,没有seek或flush中间的read-after-write的确切行为是未定义的,即每个实现都可能导致不同的结果。在