我正在尝试将许多复制命令的成功或失败记录到日志文件中。我正在使用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文档中看到这个。
我想我也希望能够捕获返回值,这样脚本就不会在复制失败时爆炸 - 我试图让它继续而不管错误。
感谢。
答案 0 :(得分:16)
您需要查看exceptions section的Python tutorial。如果shutil.copy()没有找到其中一个参数,则会引发IOError异常。您可以从异常实例中获取消息。
try:
shutil.copy(src, dest)
except IOError, e:
print "Unable to copy file. %s" % e
答案 1 :(得分:4)
您很少会在Python中看到类似C的返回码,而是通过例外来表示错误。
记录结果的正确方法是:
try:
shutil.copy(src, dest)
except EnvironmentError:
print "Error happened"
else:
print "OK"
答案 2 :(得分:2)
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()