Python程序结束前处理
使用内置库 atexit 注册程序退出前要执行的函数.
程序崩溃和外部中断都会执行。
import atexit
import time
def f():
print('结束')
atexit.register(f)
if __name__ == '__main__':
for i in range(15):
if i == 10:
1/0
time.sleep(1)
print(i)
结果如下
conda activate base
(base) PC:~/Code/PyCode/test$ python test_finish.py
0
1
2
3
4
5
6
7
8
9
Traceback (most recent call last):
File "/home/xxx/Code/PyCode/test/test_finish.py", line 14, in <module>
1/0
ZeroDivisionError: division by zero
结束
(base) PC:~/Code/PyCode/test$ python test_finish.py
0
1
2
^CTraceback (most recent call last):
File "/home/xxx/Code/PyCode/test/test_finish.py", line 15, in <module>
time.sleep(1)
KeyboardInterrupt
结束