Как я могу захватить возвращаемое значение shutil.copy() в Python (в DOS)?

Я пытаюсь записать успех или неудачу нескольких команд копирования в файл журнала. Я использую 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)

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

[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.

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

Спасибо.

Ответ 1

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

try:
    shutil.copy(src, dest)
except IOError, e:
    print "Unable to copy file. %s" % e

Ответ 2

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

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

try:
    shutil.copy(src, dest)
except EnvironmentError:
    print "Error happended"
else:
    print "OK"

Ответ 3

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()