当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《无法在Windows上删除由`tempfile.mkstemp()`创建的文件》经验,为你挑选了1个好方法。

这是我的示例代码:

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 
    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> Ignacio Vazq..:

从文档:

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

[...]

mkstemp()将包含操作系统级句柄的元组返回到打开的文件(如将返回os.open())和该文件的绝对路径名,按此顺序.

fd, fname = mkstemp(suffix='.txt', text=True)
os.close(fd)
os.remove(fname)

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有