为什么我不能在VS Code的外部终端捕获ctrl+C键(python的KeyBoardInterrupt异常)?

0 人关注

我使用VS Code来开发Python程序。我发现在使用外部终端时,它不能捕捉到ctrl+C键,但在集成终端上可以正常工作。

Here is my python code:

import time
print('press enter to start,and press ctrl+C to stop:')
while True:
    input("")
    starttime = time.time()
    print('Started')
        while True:
            print('Counting:', round(time.time() - starttime, 3), 'seconds',end='\r')
            time.sleep(0.001)
    except KeyboardInterrupt:
        print('\nEnd')
        endtime = time.time()
        print('Total Time:', round(endtime - starttime, 3), 'seconds')
        break

这是我的launch.json文件,带有集成终端。

"stopOnEntry": false, "configurations": [ "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal"

这里是我的launch.json文件,有外部终端。

"stopOnEntry": false, "configurations": [ "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "externalTerminal"

使用外部终端,当我给它一个ctrl+C键时,代码不能停止。我想弄清楚为什么以及如何解决这个问题。谢谢你的帮助。

python
visual-studio-code
StarGazerD
StarGazerD
发布于 2021-02-10
2 个回答
Bartek Lachowicz
Bartek Lachowicz
发布于 2021-02-10
已采纳
0 人赞同

你好,请用ctrl+z代替

It worked for me :)

Yash
Yash
发布于 2021-02-10
0 人赞同

使用键盘中断来关闭你的程序并不是一个很好的方法,但如果你仍然想这样做的话,我想对于VS代码来说,可以用ctr+alt+m。要用正确的方法,你应该使用 keyboard 模块。

import keyboard
if keyboard.is_pressed('q'):
    print('goodbye')
    quit()

正如评论中提到的,OP希望错误被排除,在这种情况下只需使用

raise Exception('Exiting')

In the code:

import keyboard
if keyboard.is_pressed('q'):
    print('goodbye')
    raise Exception('Exiting')