是否有一种解决方法:“除了KeyboardInterrupt之外的”try:input():“
问题描述:
我已经搜索了这个主题无济于事数小时。是否有一种解决方法:“除了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。
答
这听起来像你会对信号模块感兴趣。
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!")
刚刚试了一下,它只是返回此:回溯(最近通话最后一个): – Aaron
看起来像您的评论被切断;这对我使用python3。请记住,如果使用python2运行,应该使用raw_input()代替输入() – arbo
我修改了默认使用python3的答案,在编写本文时我没有明白。您需要更改第一行以匹配您的python安装位置,或运行脚本为> python3 script.py – arbo