[python] sigint

Hynek Fabian hynek.fabian na firma.seznam.cz
Úterý Leden 25 11:36:41 CET 2011


^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


Další informace o konferenci Python