[python] sigint
geon na post.cz
geon na post.cz
Úterý Leden 25 19:15:12 CET 2011
Díky, funguje. A dá se ve win odchytit i zavření okna, kde běží
pythonovský script?
Hynek Fabian napsal(a), dne 25.1.2011 11:36:
> ^C ma defaultni handler, odchyt vyjimku KeyboardInterrupt.
> Btw delat v kontextu signal handleru blokujici operace neni moc dobrej napad.
>
> geon na post.cz (Tuesday 25 January 2011 06:37:51):
>> Ahoj,
>>
>> v jedné části programu kopíruji soubory (obvykle velké) a chci mít
>> zajištěno, že když dám ctrl+c tak že v cíli nezbude jen část souboru -
>> chci zajistit jeho smazání přes odchycení sigint:
>>
>> def signal_handler(signal, frame):
>> print 'You pressed Ctrl+C!'
>> print dest
>> if os.path.isdir(item):
>> shutil.rmtree(dest)
>> if os.path.isfile(item):
>> os. remove(dest)
>> sys.exit(0)
>>
>> signal.signal(signal.SIGINT, signal_handler)
>>
>> toto ale nefunguje, protože cíl je asi stále otevřen původním procesem
>> kopírování. Díky za rady jak z toho ven.
>>
>> You pressed Ctrl+C!
>> xyz.mkv
>> Traceback (most recent call last):
>> File "D:\Zaloha\W7610034.py", line 48, in <module>
>> shutil.copy(item, dest)
>> File "C:\prg\Python26\lib\shutil.py", line 88, in copy
>> copyfile(src, dst)
>> File "C:\prg\Python26\lib\shutil.py", line 54, in copyfile
>> copyfileobj(fsrc, fdst)
>> File "C:\prg\Python26\lib\shutil.py", line 30, in copyfileobj
>> fdst.write(buf)
>> File "D:\Zaloha\W7610034.py", line 11, in signal_handler
>> os. remove(dest)
>> WindowsError: [Error 32] Proces nemß p°Ýstup k souboru, neboŁ jej prßvý
>> vyu×Ývß
>> jinř proces: 'xyz.mkv'
>>
>>
>>
>> xpsp3, py2.x
>>
>> Díky
>> geon
>> Pavel Kosina
>>
>>
>>
>>
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
--
Náhodný citát:
Přátelství mezi mužem a ženou nemůže existovati jako prvotní cit.
-- Lawrence
Další informace o konferenci Python