当我按CTRL + C取消正在运行的python脚本时,有没有办法在脚本终止之前运行某个python代码?
答案 0 :(得分:6)
使用try/except
捕获KeyboardInterrupt
,当您按 CTRL + C 时会引发此问题。
这是一个演示的基本脚本:
try:
# Main code
while True:
print 'hi!'
except KeyboardInterrupt:
# Cleanup/exiting code
print 'done!'
这将继续打印'hi!'
,直到您按 CTRL + C 。然后,它打印'done!'
并退出。
答案 1 :(得分:1)
CTRL + C引发KeyboardInterrupt
。您可以像任何其他异常一样捕获它:
try:
main()
except KeyboardInterrupt:
cleanup()
如果你真的不喜欢这样,你也可以使用atexit.register
注册清理操作来运行(前提是你没有做一些非常讨厌的事情并导致解释器以一种时髦的方式退出)< / p>
答案 2 :(得分:0)
try:
# something
except KeyboardInterrupt:
# your code after ctrl+c
答案 3 :(得分:0)
此代码
import time
try:
while True:
time.sleep(2)
except KeyboardInterrupt:
print "Any clean"
给出
deck@crunch ~/tmp $ python test.py
^CAny clean
执行时按Ctrl+C
您只需要处理KeyboardInterrupt例外。
此外,您可以处理signals来设置处理程序。
答案 4 :(得分:0)
我很确定你只需要try/finally
阻止。
试试这个剧本:
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()
输出应该是这样的:
blah blah
caught CTRL-C
do cleanup