【问题标题】:Can't read from tempfile in Python无法从 Python 中的临时文件中读取
【发布时间】:2014-03-20 15:39:58
【问题描述】:

我正在尝试在一个小 python 脚本中使用一些临时文件,并在使用 tempfile-module 时遇到问题:

测试代码

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() AttributeError: 'NoneType' object has no attribute 'read'

--> 这发生在装有 MacOS 10.9 和 Python 2.7.5 的 MacBook 上,“delete=False”也会发生。

有什么想法吗?这可能是一个菜鸟错误,但我找不到问题...

【问题讨论】:

    标签: python temporary-files


    【解决方案1】:

    每当您在 Python 中链接方法并得到此信息时,您可以打赌其中一个会返回 None(即使隐含地根本不返回)。解决方案通常是将链拆分为多行。

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

    【讨论】:

    • 是的——有时候我真的感觉很慢。我什么都试过了,但是这个。非常感谢!我会接受这个答案,因为我首先看到了这个答案,它解决了我的问题。
    • 别担心!我大体上是这样回答的,因为这种模式在 Python 中曾多次困扰我。有些东西我觉得我应该能够链接,但沿途的一些方法返回None,我不得不(IMO)不必要地分解它。很高兴我能帮上忙!
    【解决方案2】:

    file.seek 返回None

    你应该分开以下语句:

    print temp.seek(0).read()
    

    分成两个陈述:

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

    【讨论】:

    • @Two-BitAlchemist,对不起,我不明白你的意思。你能解释一下你的评论吗?
    • 对不起,这是对一个常见的英文短语“Great minds think alike”的引用。我们在同一秒发布了几乎完全相同的答案。 :)
    • @Two-BitAlchemist,感谢您的友好解释。
    • 是的 - 有些日子我真的感觉很慢。我什么都试过了,但是这个。非常感谢!我会接受两位的回答,因为我首先看到了那个答案,它解决了我的问题。
    猜你喜欢
    • 2020-07-25
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多