在Python中捕获Control-C

56 投票
3 回答
98942 浏览
提问于 2025-04-17 18:33

我想知道在Python中,是否可以用以下方式捕捉到Control-C的操作:

 if input != contr-c:
    #DO THINGS
 else:
    #quit

我查了一些关于tryexcept KeyboardInterrupt的资料,但对我来说这些方法都不奏效。

3 个回答

0

如上所述,标准的做法是捕捉到 KeyboardInterrupt。我想补充一点,就是在这种情况下你可能不应该用零作为退出代码,因为你并没有完成处理。老实说,大多数调用者只关心你返回的是零还是非零,但在这种情况下,我会用 sys.exit(130),这大致意味着“因为我收到了一个中断信号,所以失败了”。

17

根据你的评论,听起来你唯一的问题是对except KeyboardInterrupt:不太了解,特别是当你收到这个中断时,怎么让程序退出。

如果是这样,那其实很简单:

import sys

try:
    user_input = input()
except KeyboardInterrupt:
    sys.exit(0)
91

可以看看这一页,关于如何处理异常的内容,应该会对你有帮助。

正如@abarnert所说,在except KeyboardInterrupt:之后加上sys.exit()

像这样:

try:
    # DO THINGS
except KeyboardInterrupt:
    # quit
    sys.exit()

你也可以使用内置的exit()函数,但正如@eryksun指出的那样,sys.exit更可靠。

撰写回答