【发布时间】:2017-07-12 03:15:14
【问题描述】:
我有几个文件必须在程序完成后删除。我真的不想使用tempfile.TemporaryFile,因为这些文件必须传递相当多的时间,并用于os.system() 调用中的命令输出重定向。所以我会使用tempfile.mkstemp,但这些不会被自动删除。我想过将我的主要方法包装在一个 try-finally 中,如下所示:
if __name__ == "__main__":
try:
main()
finally:
os.remove(tempfile)
但这看起来相当可疑。有没有更好的办法?
【问题讨论】:
-
为什么不使用临时目录呢?
-
在那条路线上,从 python3.2 开始就有
with tempfile.TemporaryDirectory() as tmpdir: ... -
哦,我没有看到这也会删除文件。这就是你只扫描文档就能得到的:)谢谢!
-
使用
try..finally块来包围您的主进程是尽可能保证在退出时调用清理过程(例如删除所有临时文件)。这仍然不意味着它会绝对被调用(用户可以硬杀你的进程,Python 可能会出现段错误,计算机上的 PSU 可能会死掉......)但它会处于正常状态手术。此外,如果您出于安全考虑要删除这些文件,请首先不要存储这些文件 - 首先创建一个 ramdisk 或类似的虚拟 FS,然后使用它。
标签: python-3.x temp