[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