如何读取python中的NamedTemporaryFile。?

如何读取python中的NamedTemporaryFile。?,python,Python,我是python2.6编程新手,我的目标是在操作系统的临时目录中创建.txt或.xls“临时文件”,并将一些数据写入其中。然后从“临时文件”中读取数据,读取数据完成后,从临时目录中删除“临时文件” 对于该过程,我选择NamedTemporaryFile(),但无法实现。 你能建议我怎么做吗?提前谢谢 >>> import os >>> import tempfile >>> with tempfile.NamedTemporaryFile()

我是python2.6编程新手,我的目标是在操作系统的临时目录中创建.txt或.xls“临时文件”,并将一些数据写入其中。然后从“临时文件”中读取数据,读取数据完成后,从临时目录中删除“临时文件”

对于该过程,我选择NamedTemporaryFile(),但无法实现。 你能建议我怎么做吗?提前谢谢

>>> import os
>>> import tempfile
>>> with tempfile.NamedTemporaryFile() as temp:
            print temp.name
            temp.write('Some data')            
            f = open(os.path.join(tempfile.gettempdir(),temp.name))
            lines = f.readlines()
            f.close()
            temp.flush()


c:\users\110\appdata\local\temp\tmpf8p3kc

Traceback (most recent call last):
  File "<pyshell#3>", line 4, in <module>
    f = open(os.path.join(tempfile.gettempdir(),temp.name))
IOError: [Errno 13] Permission denied: 'c:\\users\\110\\appdata\\local\\temp\\tmpf8p3kc'
导入操作系统 >>>导入临时文件 >>>使用tempfile.NamedTemporaryFile()作为临时文件: 打印临时名称 临时写入(“某些数据”) f=open(os.path.join(tempfile.gettempdir(),temp.name)) 行=f.读行() f、 关闭() 温度冲洗() c:\users\110\appdata\local\temp\tmpf8p3kc 回溯(最近一次呼叫最后一次): 文件“”,第4行,在 f=open(os.path.join(tempfile.gettempdir(),temp.name)) IOError:[Errno 13]权限被拒绝:“c:\\users\\110\\appdata\\local\\temp\\tmpf8p3kc”
我曾经遇到过这个问题

从文档中可以看出:“在命名的临时文件仍处于打开状态时,是否可以使用该名称再次打开该文件,因平台而异(在Unix上可以这样使用;在Windows NT或更高版本上不能这样使用)。”


当文件仍然打开时,为什么不尝试使用
temp
对象读取文件?如果它是以
w+b
模式打开的,那么您应该能够查找()和读取()

我已经创建了一个替代机制,它创建了一个命名的临时文件,但不保持其打开状态。因此,它在任何地方都完全可用。它不是在关闭时删除,而是使用块在
末尾删除

安装pip包。使用示例来自:


我使用的方法是使用
file=tempfile.NamedTemporaryFile(…,delete=False)
,在完成写入后关闭生成的文件,并在完成写入后手动调用
os.remove(file.name)
。(您可以在的
\uuuu exit\uuuu
方法中执行文件删除操作,以便更好地与
一起使用)

一般来说,可能并不总是可以“尝试读取文件”。在遇到这个问题的情况下,我正在写入一个临时文件,该文件后来被馈送到另一个程序,以及另一个程序(我无法控制)预期能够打开指定的文件。如果设置
delete=False
,使用NamedTemporaryFile有什么好处?@MattIanHong除了自动删除之外,还可以使用
NamedTemporaryFile
。默认情况下,它将被放在一个临时目录中,并且自动生成文件名,以避免与现有文件冲突,并且不存在争用条件。
with fs.NamedTempFile() as nm:
    proc.call( "curl http://mortoray.com/ -o {}".format( nm ) )
    html = open(nm).read()
    print( len(html) )