2016-07-29 8 views
1

私は何時間もこのトピックを無駄に検索しました。"try:input()except KeyboardInterrupt:"の回避策はありますか?

の線に沿って何かをすることが可能です:

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

しかし、私はこれを試してみて、CTRL-Cを行う際に、それだけで何もしません。

これを達成する他の方法はありますか?

のWindows 10、Pythonの3.5.2、およびPowerShellの

使用注:/のelif/else文は、それをベースにした場合、私は印刷用input_varを使用していない、私は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を使用して実行する場合、input()の代わりにraw_input()を使用する必要があります。 – arbo

+0

python3をデフォルトで使用するように修正しましたが、私はその時点でこれを捕まえませんでした。最初の行をPythonのインストール場所に合わせて変更するか、スクリプトを> python3 script.pyとして実行する必要があります。 – arbo

関連する問題