程序终止时触发代码

时间:2011-03-27 10:53:23

标签: python delete-file termination

我的脚本会创建文件以在运行时间内存储数据,我想删除程序中终止的文件。这可能吗?

我不想要一个解决方案的建议......比如'不要创建文件'。

非常感谢!

4 个答案:

答案 0 :(得分:7)

Python的os模块怎么样?有一种“remove()”方法可以做你想要的。

请参阅documentation

要处理程序的退出,您可以使用atexit模块。

示例:

import os

def delete_file(name):
    os.remove(name)

import atexit
atexit.register(delete_file, file_path)

file_path是要删除的文件。

答案 1 :(得分:6)

您需要atexit()处理程序。

根据我的经验,也许是由于解释器中的错误(?),我发现使用它们非常具有挑战性,因为有时我需要使用的资源已被清理,包括我需要使用的模块。

答案 2 :(得分:1)

Python提供对tempfiles的支持(参见同名模块)。当程序终止时,可能无法保证删除这些内容,但操作系统知道可以在没有通知的情况下删除它们(例如,在某些Unix上,每晚)。

答案 3 :(得分:1)

这是一个似乎正常工作的简单方法。我没有在实际代码中使用它,因此可能存在我不知道的缺点。欢迎来自更有经验的Pythonistas的批评。

import sys

def main():
    print('main')
    sys.exit(0)

try:
    main()
finally:
    print('cleanup code goes here')