1

我希望用户使用 control-c 来关闭脚本,但是当按下 control-c 时,它会显示错误和关闭原因(这是有道理的)。有没有办法让我自己的自定义输出到屏幕而不是显示的内容?不确定如何处理该特定错误。

4

3 回答 3

6

你可以try..except用来捕捉键盘中断:

import time

def main():
    time.sleep(10)

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print('bye')
于 2013-07-08T18:36:15.857 回答
1

使用信号模块为 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...')
于 2016-01-14T00:33:15.773 回答
0

对于通用代码,处理 KeyboardInterrupt 就足够了。对于高级代码,例如线程,这是一个完全不同的故事。这是一个简单的例子。

http://docs.python.org/2/library/exceptions.html#exceptions.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."
于 2013-07-08T18:41:30.440 回答