【发布时间】:2016-01-14 08:33:15
【问题描述】:
我希望用户使用 control-c 来关闭脚本,但是当按下 control-c 时,它会显示错误和关闭原因(这是有道理的)。有没有办法让我自己的自定义输出到屏幕而不是显示的内容?不确定如何处理该特定错误。
【问题讨论】:
标签: python error-handling
我希望用户使用 control-c 来关闭脚本,但是当按下 control-c 时,它会显示错误和关闭原因(这是有道理的)。有没有办法让我自己的自定义输出到屏幕而不是显示的内容?不确定如何处理该特定错误。
【问题讨论】:
标签: python error-handling
您可以使用try..except 来捕获键盘中断:
import time
def main():
time.sleep(10)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print('bye')
【讨论】:
使用signal module 为 SIGINT 信号定义处理程序:
import signal
import sys
def sigint_handler(signal_number, stack_frame):
print('caught SIGINT, exiting')
sys.exit(-1)
signal.signal(signal.SIGINT, sigint_handler)
raw_input('waiting...')
【讨论】:
对于通用代码,处理 KeyboardInterrupt 就足够了。对于高级代码,例如线程,这是一个完全不同的故事。这是一个简单的例子。
try:
while 1:
x = raw_input("Type something or press CTRL+C to end: ")
print repr(x)
except KeyboardInterrupt:
print "\nWe're done here."
【讨论】: