如何讓你的程序在退出的時候執行一段代碼?

使用python自帶的一個atexit模塊

測試代碼:

import atexit

@atexit.register
def clean():
  print("程序推出時會執行的代碼已經被執行!")

def test():
  example = {'a': 1, 'b': 2}
  print(example['c'])   # 此錯出錯

test()

輸出的結果是這樣的:

Traceback (most recent call last):
  File "e:\File\OtherText\script練習\讓程序在退出的時候執行一段代碼.py", line 14, in <module>
    test()
  File "e:\File\OtherText\script練習\讓程序在退出的時候執行一段代碼.py", line 11, in test
    print(example["c"])  # 此錯出錯
KeyError: 'c'
程序推出時會執行的代碼已經被執行!

很明顯能看出由於報錯,程序意外終止,但是clean()函數依舊被執行了,程序即使不報錯clean()的內容依舊會被執行,這裡就不再演示,不信的話可以自己嘗試一下,

 

注意事項:

• 如果clean()函数有参数,那么你可以不用装饰器,而是直接调用atexit.register(clean_1, 参数1, 参数2, 参数3='xxx')。
• 如果程序是被你没有处理过的系统信号杀死的,那么注册的函数无法正常执行。
• 如果发生了严重的Python内部错误,你注册的函数无法正常执行。
• 如果你手动调用了os._exit(),你注册的函数无法正常执行。

上一篇:maven(1)


下一篇:Maven生命周期(二)