27

Ctrl+を押したときにトレースバックが表示されないようにする方法はありますか?つまり、Python スクリプトでcレイズしますか?KeyboardInterrupt

4

8 に答える 8

41

これを試して:

import signal
import sys
signal.signal(signal.SIGINT, lambda x, y: sys.exit(0))

この方法では、すべてを例外ハンドラーにラップする必要はありません。

于 2012-08-01T15:32:49.003 に答える
31
import sys
try:
    # your code
except KeyboardInterrupt:
    sys.exit(0) # or 1, or whatever

Ctrl+を取得したときにまだ終了したいと仮定すると、最も簡単な方法ですc

try/exceptなしでトラップしたい場合は、モジュールを使用してこのようなレシピを使用できますが、Windowsでは機能しないようです..signal

于 2011-08-16T03:20:00.827 に答える
7

キャッチKeyboardInterrupt:

try:
    # do something
except KeyboardInterrupt:
    pass
于 2011-08-16T03:19:00.383 に答える
2

try/except ブロックでキャッチします。

while True:
   try:
      print "This will go on forever"
   except KeyboardInterrupt:
      pass
于 2011-08-16T03:19:02.920 に答える
2
try:
    your_stuff()
except KeyboardInterrupt:
    print("no traceback")
于 2011-08-16T03:19:26.253 に答える
1

また、デフォルトでは、インタプリタはステータス コード 128 + プラットフォームの SIGINT の値 (ほとんどのシステムでは 2) で終了することに注意してください。

    import sys, signal

    try:
        # code...
    except KeyboardInterrupt: # Suppress tracebacks on SIGINT
        sys.exit(128 + signal.SIGINT) # http://tldp.org/LDP/abs/html/exitcodes.html
于 2011-11-13T01:17:38.780 に答える
-5
import sys
try:
    print("HELLO")
    english = input("Enter your main launguage: ")
    print("GOODBYE")
except KeyboardInterrupt:
    print("GET LOST")
于 2015-06-30T08:04:37.567 に答える