2016-07-29 48 views
1

我已经搜索了这个主题无济于事数小时。是否有一种解决方法:“除了KeyboardInterrupt之外的”try:input():“

是否有可能做线沿线的东西:

try: 
    input_var = input('> ') 
except KeyboardInterrupt: 
    print("This will not work.") 

但是当我尝试这样做CTRL-C,它只是什么都不做。

有没有其他办法可以达到这个目的?

使用Windows 10,Python的3.5.2,和PowerShell

注:我不使用打印的input_var,如果/ ELIF/else语句围绕它基于我做3。

回答

2

这听起来像你会对信号模块感兴趣。

This Answer演示如何使用信号模块来捕获Ctrl + C或SIGINT。

为您的使用情况下,沿以下线的东西会工作:

#!/usr/local/bin/python3 
import signal 

def signal_handler(signal, frame): 
    raise KeyboardInterrupt('SIGINT received') 

signal.signal(signal.SIGINT, signal_handler) 
try : 
    input_var = input('> ') 
except KeyboardInterrupt : 
    print("CTRL+C Pressed!") 
+0

刚刚试了一下,它只是返回此:回溯(最近通话最后一个): – Aaron

+0

看起来像您的评论被切断;这对我使用python3。请记住,如果使用python2运行,应该使用raw_input()代替输入() – arbo

+0

我修改了默认使用python3的答案,在编写本文时我没有明白。您需要更改第一行以匹配您的python安装位置,或运行脚本为> python3 script.py – arbo

相关问题