无法在Python中从临时文件读取

3 投票
2 回答
2746 浏览
提问于 2025-04-17 23:09

我在写一个小的Python脚本时,想使用一些临时文件,但在使用tempfile模块时遇到了问题:

测试代码

import tempfile
with tempfile.NamedTemporaryFile() as temp:
    print temp.name
    temp.write('Some data')
    print temp.seek(0).read()

输出结果

s$ python tmpFileTester.py

/var/folders/cp/8kmr4fhs4l94y8fdc6g_84lw0000gn/T/tmpcDgrzF

错误追踪

(最近的调用最后): 文件 "tmpFileTester.py",第5行,在这里

print temp.seek(0).read() 属性错误: 'NoneType'对象没有'read'这个属性

--> 这个问题出现在我的MacBook上,系统是MacOS 10.9,使用的是Python 2.7.5,设置"delete=False"时也会出现同样的问题。

有没有什么想法?这可能是个新手错误,但我找不到问题所在...

2 个回答

2

file.seek 这个函数会返回 None

你应该把下面的语句分开:

print temp.seek(0).read()

变成两个语句:

temp.seek(0)
print temp.read()
3

每当你在Python中连续调用多个方法时,如果出现了这个问题,你可以肯定其中一个方法返回了None(即使是因为没有返回任何东西而隐式返回的)。解决这个问题的办法通常是把这些方法分开,写在多行上。

temp.seek(0)
print temp.read()

撰写回答