无法在Windows上删除由`tempfile.mkstemp()`创建的文件

时间:2016-01-11 08:29:57

标签: python windows python-3.x file-io temporary-files

这是我的示例代码:

import os
from tempfile import mkstemp

fname = mkstemp(suffix='.txt', text=True)[1]
os.remove(fname)

当我在Linux上运行它时,它运行正常。但是当我使用Python 3.4.4在我的Windows XP上运行它时,它引发了以下错误:

Traceback (most recent call last):
  File "C:\1.py", line 5, in <module>
    os.remove(fname)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\DOCUME~1\\IEUser\\LOCALS~1\\Temp\\tmp3qv6ppcf.txt'

但是,当我使用tempfile.NamedTemporaryFile()创建临时文件并将其关闭时,它会自动删除。

为什么Windows无法删除mkstemp创建的文件?我在哪里做错了?

1 个答案:

答案 0 :(得分:13)

来自the documentation

  

以最安全的方式创建临时文件。 [...]

     

[...]

     

int a; a = asciiToInt(latitude[0]); a += asciiToInt(latitude[1])*10; a += asciiToInt(latitude[2])*100; a = a*2; 按顺序返回一个元组,该元组包含一个打开文件的OS级句柄(由mkstemp()返回)和该文件的绝对路径名。

os.open()