Je veux attraper KeyboardInterrupt
monde et m'en occuper gentiment. Je ne veux pas enfermer tout mon script dans une énorme instruction try/except. Y a-t-il un moyen de faire ça?
Réponses
Trop de publicités?
Rob Cowie
Points
10471
mouad
Points
21520
Vous pouvez également utiliser un signal comme celui-ci :
import signal, time
def handler(signum, frame):
print 'I just clicked on CTRL-C '
signal.signal(signal.SIGINT, handler)
print "waiting for 10 s"
time.sleep(10)
Sortir:
waiting for 10 s
^CI just clicked on CTRL-C
NB : Ne mélangez pas l'utilisation du signal avec les threads.
Claudiu
Points
58398
Tamás
Points
18211
Il n'y a pas d'autre moyen de le faire, à part encapsuler votre script entier dans une fonction main()
et l'entourer d'un try..except
- ce qui est à peu près la même chose :
def main():
# Your script goes here
pass
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
# cleanup code here
pass