2009-11-02 19 views
11

Bir dizi kopya komutunun başarısını veya başarısızlığını bir günlük dosyasına kaydetmeye çalışıyorum. shutil.copy() kullanıyorum - ör.Python'da (DOS'ta) shutil.copy() işlevinin dönüş değerini nasıl alabilirim?

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) 

Ben başarısız benim komut kopya komutlardan birini zorla ve hata oluşturdu:

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

Bu harika ama ben "Errno 2 No such file or directory" yakalayıp bir günlüğüne bunu yazabilir dosya? shutil.copy() bir tam sayı değeri mi veriyor? - Bunu Python belgelerinde açıklanmış görmüyorum.

Ayrıca, geri dönüş değerini yakalayabilmek istiyorum, böylece komut dosyası bir kopyalama hatası üzerinde bombalama yapmaz - hatalardan bağımsız olarak devam ettirmeye çalışıyorum.

Teşekkürler.

cevap

16

Sen Python tutorial ait exceptions section bakmak isteyeceksiniz. Shutil.copy() 'da argümanlardan birinin bulunmaması durumunda, bir IOError istisnası yükseltilecektir. Özel durum örneğinden iletiyi alabilirsiniz.

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

Python'da C benzeri dönüş kodlarını nadiren göreceksiniz, hatalar bunun yerine istisnalarla gösterilir.

günlüğü sonucun doğru yoludur:

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

çok teşekkürler, Alex ve Jamessan - Sadece istisnalar dışında denedim ve bu bir tedavi çalışır. – BeeBand

1
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() 
+0

harika. Teşekkürler bu gerçekten yararlıdır. – BeeBand

İlgili konular