如果我正在linux终端上运行一个python程序,并且我按下ctrl + c手动中止它,那么如何让我的程序在发生此事件时执行某些操作。Python-如何检查程序是否在运行时被用户中止?
类似:
if sys.exit():
print "you chose to end the program"
如果我正在linux终端上运行一个python程序,并且我按下ctrl + c手动中止它,那么如何让我的程序在发生此事件时执行某些操作。Python-如何检查程序是否在运行时被用户中止?
类似:
if sys.exit():
print "you chose to end the program"
你可以写一个信号处理函数
import signal,sys
def signal_handling(signum,frame):
print "you chose to end the program"
sys.exit()
signal.signal(signal.SIGINT,signal_handling)
while True:
pass
按Ctrl + c发送一个SIGINT中断,输出:
您选择以结束该程序
为什么downvote? –
@TimPietzcker:不,当然。这似乎是一个有效的答案,尽管人们习惯于使用'KeyBoardInterrupt'异常。 – Abhijit
@Ahhijit:我认为一个设置良好的信号处理程序比不得不将整个程序包装在'try/except'中更好。我想这取决于如果用户选择*不*中止程序会发生什么。 –
检查KeyboardInterrupt例外Python编写的。
您可以将您的代码放入try
区块,用except
捕获KeyboardInterrupt
例外并让用户知道他已退出。
好了,你可以使用KeyBoardInterrupt
,使用try-except块:
try:
# some code here
except KeyboardInterrupt:
print "You exited
尝试在你的命令行:
import time
try:
while True:
time.sleep(1)
print "Hello"
except KeyboardInterrupt:
print "No more Hellos"
你必须使用'signal'模块。 http://stackoverflow.com/a/18115530/1688590。还要注意检查'if sys.exit()'是否会立即关闭你的程序。 – xbello
@xbello由于OP要求用'ctrl-C'退出,所以不需要信号。 'KeyboardInterrupt'就足够了。 – FallenAngel