^C ma defaultni handler, odchyt vyjimku KeyboardInterrupt. Btw delat v kontextu signal handleru blokujici operace neni moc dobrej napad.
g...@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@py.cz > http://www.py.cz/mailman/listinfo/python _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python