2009-11-02 12 views
11

मैं लॉग फ़ाइल में कई कॉपी कमांड की सफलता या विफलता रिकॉर्ड करने की कोशिश कर रहा हूं। मैं shutil.copy() का उपयोग कर रहा हूं - उदा।मैं पायथन (डॉस पर) में 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() एक पूर्णांक मान देता है? - मुझे यह पाइथन दस्तावेज़ों में वर्णित नहीं दिख रहा है।

मुझे लगता है कि मैं भी वापसी मूल्य पर कब्जा करने में सक्षम होना चाहता हूं, ताकि स्क्रिप्ट एक प्रति विफलता पर बम न हो - मैं त्रुटियों पर ध्यान दिए बिना इसे जारी रखने की कोशिश कर रहा हूं।

धन्यवाद।

उत्तर

16

आप Python tutorial की exceptions section को देखने के लिए चाहता हूँ। Shutil.copy() के तर्क में से किसी एक को नहीं ढूंढने के मामले में, IOError अपवाद उठाया जाएगा। आप अपवाद उदाहरण से संदेश प्राप्त कर सकते हैं।

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

आप शायद ही कभी पाइथन में सी-जैसे रिटर्न कोड देखेंगे, त्रुटियों को इसके बजाय अपवादों द्वारा संकेतित किया जाता है।

लॉगिंग परिणाम का सही तरीका है:

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

बहुत धन्यवाद, एलेक्स और Jamessan - मैं सिर्फ बाहर अपवाद की कोशिश की है और यह एक का इलाज काम करता है। – 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

शानदार। धन्यवाद यह वास्तव में उपयोगी है। – BeeBand

संबंधित मुद्दे

 संबंधित मुद्दे