Portál AbcLinuxu, 6. května 2025 17:27

Dotaz: Python - keyboard interupt

30.1.2012 10:39 Martin Zavacky
Python - keyboard interupt
Přečteno: 150×
Odpovědět | Admin
Zdravim, casto kdyz si pisi nejaky skriptik v pythonu resim situaci, kdy ho chci zabit pomoci CTRL+C, avsak bez toho, aniz bych dostal vypis error stacku.

Typicky to resim takto:
try:
   neco_delej()
except KeyboardInterrupt:
    quit()
Ale neprijde mi to jako elegantni varianta obalovat timto blokem cele telo kodu (jelikoz chci vyjimku odchytnout kdykoliv behem behu programu prijde). Neexistuje proto nejaka elegantnejsi metoda jak docilit toho sameho?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.1.2012 11:33 Radovan Garabík
Rozbalit Rozbalit vše Re: Python - keyboard interupt
Odpovědět | | Sbalit | Link | Blokovat | Admin
import signal, sys

def keybint(signum, frame):
    # spracovanie prerusenia
    print "zaregistroval som CTRL C"
    sys.exit(1)

signal.signal(signal.SIGINT, keybint)

while True:
    pass

30.1.2012 11:33 Radek Novacek | skóre: 3
Rozbalit Rozbalit vše Re: Python - keyboard interupt
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je možné odchytávat SIGINT signál:
import signal
import sys
def signal_handler(signal, frame):
    print 'Exitting'
    sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.