[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