web-dev-qa-db-fra.com

Capturez Control-C dans Python

Je veux savoir s'il est possible d'attraper un Control-C dans python de la manière suivante:

 if input != contr-c:
    #DO THINGS
 else:
    #quit

J'ai lu des trucs avec try et except KeyboardInterrupt mais ils ne travaillent pas pour moi.

29
pauliwago

Pensez à lire this page sur la gestion des exceptions .. Cela devrait aider.

Comme @ abarnert l'a dit, faites sys.exit() après except KeyboardInterrupt:.

Quelque chose comme

try:
    # DO THINGS
except KeyboardInterrupt:
    # quit
    sys.exit()

Vous pouvez également utiliser la fonction exit() intégrée, mais comme @ eryksun l'a souligné, sys.exit Est plus fiable.

45
pradyunsg

D'après vos commentaires, cela semble être votre seul problème avec except KeyboardInterrupt: est que vous ne savez pas comment le faire sortir lorsque vous obtenez cette interruption.

Si oui, c'est simple:

import sys

try:
    user_input = input()
except KeyboardInterrupt:
    sys.exit(0)
10
abarnert