我想在我的 Python 程序完成时运行一个任务,但前提是它成功完成。据我所知,使用 atexit 模块意味着我注册的函数将始终在程序终止时运行,无论成功与否。是否有类似的功能来注册一个函数,以便它只在成功退出时运行?或者,我的退出函数有没有办法检测退出是正常的还是异常的?
这是一些演示问题的代码。它将打印程序成功,即使它失败了。
import atexit
def myexitfunc():
print "Program succeeded!"
atexit.register(myexitfunc)
raise Exception("Program failed!")
输出:
$ python atexittest.py
Traceback (most recent call last):
File "atexittest.py", line 8, in <module>
raise Exception("Program failed!")
Exception: Program failed!
Program succeeded!