Python:不能不断地捕捉Windows中的键盘中断?

在Python中,我编写了下面的代码,以查看我的程序是否可以像所有那些精美的terminal应用程序(如Vim或Dwarf Fortress)一样,不会终止于Control + C。

def getinput(): x = input('enter something: ') while True: try: getinput() except KeyboardInterrupt: pass 

不幸的是,在Windows控制台,这个脚本几秒钟后终止。 如果我在IDLE中运行它,它按预期工作。 Python版本是3.2.1,3.2行为一样。 难道我做错了什么?

编辑:如果我按住Ctrl + C,那就是。

为了不终止在Control-C你需要设置一个信号处理程序。 从这里的Python文档

Python在默认情况下会安装少量的信号处理程序:SIGPIPE被忽略(所以管道和套接字上的写入错误可以作为普通的Python异常报告),SIGINT被转换为KeyboardInterrupt异常。 所有这些都可以被覆盖。

所以你需要安装一个信号处理程序来捕获SIGINT信号,然后按照你的要求做。

与IDLE行为可能是他们有一个处理程序安装阻止应用程序退出。