Python 在不退出程序的情况下使用 ctrl + c 取消进程?

Python cancel process using ctrl + c without quitting program?

我希望能够通过按 ctrl + c 退出我的程序正在执行的操作,但不完全退出程序。我确定某处有关于此的线程,但我找不到与我想要的相关的任何内容。这就是我想要的

def sleep():
    time.sleep(3600)

print("Hello!")

.

>Start program
>Hit ctrl + c 10 seconds later,
>Program prints 'Hello!'

您可以将您的函数包装在 try except 块中并侦听 KeyboardInterrupt,类似于 this post。

完整代码:

def sleep():
    try:
        time.sleep(3600)
    except KeyboardInterrupt:
        pass

print("Hello!")

如前所述,您可以捕获键盘中断。作为一个额外的问题,让 2 次 ctrl-c 按下来终止程序是很常见的。在这个例子中,如果用户在 2 秒内点击弹出按钮两次,我们真的会退出。

import time

kb_interrupt_time = 0.0

for i in range(100):
    try:
        time.sleep(1)
    except KeyboardInterrupt:
        now = time.time()
        if now - kb_interrupt_time < 2:
            print("done")
            raise
        print("interrupted")
        kb_interrupt_time = now
    print("beep", i)