Python:无法在Windows中持续捕获KeyboardInterrupt?
在Python中,我写了以下代码,想看看能不能让我的程序在按下Control+C时不结束,就像那些高级的终端应用程序,比如Vim或Dwarf Fortress。
def getinput():
x = input('enter something: ')
while True:
try:
getinput()
except KeyboardInterrupt:
pass
可惜的是,在Windows控制台中,这段脚本过几秒就会结束。如果我在IDLE中运行,它就能按预期工作。我的Python版本是3.2.1,3.2的表现也是一样。我是不是做错了什么?
补充说明:如果我一直按着Control+C的话。
1 个回答
2
为了让程序在按下 Control-C
时不退出,你需要设置一个信号处理器。
根据Python的文档,Python默认安装了一些信号处理器:比如SIGPIPE信号会被忽略(这样在管道和套接字上的写入错误可以作为普通的Python异常来处理),而SIGINT信号会被转换成一个KeyboardInterrupt异常。所有这些默认行为都是可以被覆盖的。
所以,你需要安装一个信号处理器来捕捉 SIGINT
信号,并在捕捉到这个信号时执行你想要的操作。
在IDLE环境中,可能是因为他们安装了一个处理器,阻止了程序退出。