Удалить трассировку в Python на Ctrl-C

Есть ли способ предотвратить отслеживание трассировки при нажатии Ctrl + c,  т.е. поднять KeyboardInterrupt в Python script?

Ответы

Ответ 1

import sys
try:
    # your code
except KeyboardInterrupt:
    sys.exit(0) # or 1, or whatever

Это самый простой способ, при условии, что вы все еще хотите выйти, когда получите Ctrl + c.

Если вы хотите перехватить его без попытки/исключения, вы можете использовать такой рецепт, используя signal модуль, за исключением того, что он не работает для меня в Windows..

Ответ 2

Попробуй это:

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

Таким образом, вам не нужно оборачивать все в обработчик исключений.

Ответ 3

Поймайте KeyboardInterrupt:

try:
    # do something
except KeyboardInterrupt:
    pass

Ответ 4

try:
    your_stuff()
except KeyboardInterrupt:
    print("no traceback")

Ответ 5

Поймайте его с помощью блока try/except:

while True:
   try:
      print "This will go on forever"
   except KeyboardInterrupt:
      pass

Ответ 6

Также обратите внимание, что по умолчанию интерпретатор выходит со статусом 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

Ответ 7

import sys
try:
    print("HELLO")
    english = input("Enter your main launguage: ")
    print("GOODBYE")
except KeyboardInterrupt:
    print("GET LOST")