【问题标题】:Python: How to ensure that a file gets deleted when the program finishes?Python:如何确保程序完成时文件被删除?
【发布时间】: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


【解决方案1】:

上面的 cmets 已经回答了我的问题,但我找到了另一个简洁的解决方案,我将留在这里以供将来参考:atexit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多