[python] sigint
geon na post.cz
geon na post.cz
Úterý Leden 25 06:37:51 CET 2011
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
Další informace o konferenci Python