When cancelling a Python script do something
本问题已经有最佳答案,请猛点这里访问。
当我按CTRL + C取消正在运行的python脚本时,有没有办法在脚本终止之前运行某个python代码?
使用
这是一个演示的基本脚本:
1 2 3 4 5 6 7 | try: # Main code while True: print 'hi!' except KeyboardInterrupt: # Cleanup/exiting code print 'done!' |
这将连续打印
CTRL + C引发
1 2 3 4 | try: main() except KeyboardInterrupt: cleanup() |
如果你真的不喜欢它,你也可以使用
我很确定你只需要一个
试试这个脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import time def main(): try: while True: print("blah blah") time.sleep(5) except KeyboardInterrupt: print("caught CTRL-C") finally: print("do cleanup") if __name__ == '__main__': main() |
输出应该是这样的:
1 2 3 | blah blah caught CTRL-C do cleanup |
这段代码
1 2 3 4 5 6 7 | import time try: while True: time.sleep(2) except KeyboardInterrupt: print"Any clean" |
给
1 2 | deck@crunch ~/tmp $ python test.py ^CAny clean |
当我执行时按
您只需要处理KeyboardInterrupt异常。
您还可以处理信号以设置处理程序。
1 2 3 4 | try: # something except KeyboardInterrupt: # your code after ctrl+c |