• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Asc.416e74
博客园    首页    新随笔    联系   管理     

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

使用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(),你注册的函数无法正常执行。

posted @ 2020-05-11 12:51  ストッキング  阅读(144)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3