1. 我已经创建了一个临时文件。
  2. 增加的某些数据的文件的创建。
  3. 救它,然后再试图将其删除。

但我得到 WindowsError.我已经关闭后的文件的编辑。我怎么检查的其他程访问文件。

C:\Documents and Settings\Administrator>python
Python 2.6.1 (r261:67517, Dec  4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tempfile
>>> __, filename = tempfile.mkstemp()
>>> print filename
c:\docume~1\admini~1\locals~1\temp\tmpm5clkb
>>> fptr = open(filename, "wb")
>>> fptr.write("Hello World!")
>>> fptr.close()
>>> import os
>>> os.remove(filename)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
WindowsError: [Error 32] The process cannot access the file because it is being used by
       another process: 'c:\\docume~1\\admini~1\\locals~1\\temp\\tmpm5clkb'
有帮助吗?

解决方案

文档:

mkstemp()返回元组含有一个系统级处理一个开放的文件(如将返回的操作系统。open())和绝对路径的文件。在新版本2.3.

所以, mkstemp 返回操作系统文件处理来 该文件的临时文件。当您重新开放的临时文件,原始返回的文件处理仍然是开放的(没有人可以阻止你开两次或更多次的同一个文件在您的节目)。

如果你要操作,操作系统文件处理作为蟒蛇文件的目的,你可以:

>>> __, filename = tempfile.mkstemp()
>>> fptr= os.fdopen(__)

然后继续你的正常的代码。

其他提示

该文件仍然是开放的。这样做:

fh, filename = tempfile.mkstemp()
...
os.close(fh)
os.remove(filename)

我相信你需要释放fptr关闭文件干净。试图设置fptr。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top