【发布时间】:2017-09-28 01:03:42
【问题描述】:
如果您使用的是tempfile 库,那么您可能会遇到这样的情况:即使您的程序已经完成,临时文件也不会被自动删除。这对于会被多次使用的程序来说非常重要,因为一旦临时文件堆积起来,它的目录就会变得混乱。
【问题讨论】:
标签: python python-3.x delete-file temporary-files
如果您使用的是tempfile 库,那么您可能会遇到这样的情况:即使您的程序已经完成,临时文件也不会被自动删除。这对于会被多次使用的程序来说非常重要,因为一旦临时文件堆积起来,它的目录就会变得混乱。
【问题讨论】:
标签: python python-3.x delete-file temporary-files
这是问答环节。因此,这是我的解决方案。
显然,tempfile.TemporaryFile 的默认设置不会自动删除您的临时文件,但在您的 tempfile.NamedTemporaryFile 中添加前缀可以:
with tempfile.NamedTemporaryFile(prefix="anything_",
dir=os.getcwd()) as tempf:
'''put something'''
tempf.seek(0)
注意事项:
os.getcwd() 用于获取文件的当前目录。anything_ + (random values)(即anything_23mem)希望对你有帮助。
【讨论】:
prefix 来触发with 块退出时的自动删除,我也从来没有失败过自动删除(除了ctypes 或扩展实际上使解释器绕过清理而崩溃的情况)。如果这完全可行,则可能是明确使用工作目录作为存储位置(可能是因为您的TEMP 存储目录的权限有问题),与prefix 无关。
TEMP 文件夹中的临时文件不起作用。所以我去了那个目录(在运行我的脚本之后),我仍然在那里看到它们。为确保可以轻松监控它,我所做的下一件事是使临时文件的dir 与脚本目录相同。另外,我正在使用PC的管理员。所以我尝试运行脚本,它工作,但临时文件仍然存在。这就是为什么我要分享我的“解决方案”,如果有人会遇到同样的情况。