[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