我是python2.6编程的新手,我的目标是在os的temp目录中创建.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'
答案 0 :(得分:10)
我使用的方法是使用file = tempfile.NamedTemporaryFile(..., delete=False)
,在写完文件后关闭生成的文件,并在完成后手动调用os.remove(file.name)
。 (您可以使用a custom context manager的__exit__
方法删除文件,以便更好地与with
一起使用。)
答案 1 :(得分:1)
我曾经遇到过这个问题..
来自文档:“名称是否可用于第二次打开文件,而命名的临时文件仍然打开,因平台而异(它可以在Unix上使用;它不能在Windows NT或更高版本上使用)“。
为什么不在temp
对象仍处于打开状态时尝试从文件中读取?如果它以w+b
模式打开,那么你应该能够搜索()和读取()
答案 2 :(得分:-1)