Как я могу получить возвращаемое значение shutil.copy () в Python (на DOS)? - PullRequest
11 голосов
/ 02 ноября 2009

Я пытаюсь записать успех или неудачу ряда команд копирования в файл журнала. Я использую shutil.copy() - например,

str_list.append(getbitmapsfrom) 
game.bigbitmap = "i doubt this is there.bmp"
str_list.append(game.bigbitmap)
source = '\\'.join(str_list)
shutil.copy(source, newbigbmpname)

Я вызвал сбой одной из команд копирования в моем скрипте, и она вызвала ошибку:

[Errno 2] No such file or directory: 'X:\PJ_public\PJ_Services\BSkyB-PlayJam\Content\P_NewPortal2009\1.0.0\pframes\i doubt this is is there.bmp'

Это здорово, но могу ли я перехватить "Errno 2 No such file or directory" и записать его в файл журнала? shutil.copy() возвращает целое значение? - Я не вижу этого в документации по Python.

Полагаю, я также хочу иметь возможность получить возвращаемое значение, чтобы сценарий не бомбил при сбое копирования - я пытаюсь заставить его работать независимо от ошибок.

Спасибо.

Ответы [ 3 ]

16 голосов
/ 02 ноября 2009

Вы захотите взглянуть на раздел исключений учебника по Python . В случае, если shutil.copy () не найдет один из аргументов, будет сгенерировано исключение IOError. Вы можете получить сообщение из экземпляра исключения.

try:
    shutil.copy(src, dest)
except IOError, e:
    print "Unable to copy file. %s" % e
4 голосов
/ 02 ноября 2009

Вы редко будете видеть C-подобные коды возврата в Python, об ошибках вместо этого сигнализируются исключения.

Правильный способ регистрации результатов:

try:
    shutil.copy(src, dest)
except EnvironmentError:
    print "Error happened"
else:
    print "OK"
2 голосов
/ 23 декабря 2010
try:
    shutil.copy(archivo, dirs)
except EnvironmentError:
    print "Error en el copiado"
    escritura = "no se pudo copiar %s a %s \n" % (archivo, dirs)
else:
    print "Copiado con exito"
    escritura = "%s --> %s \n" % (archivo, dirs)
finally:
    log = open("/tmp/errorcreararboldats.log", "a")
    log.write(escritura)
    log.close()
...