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