2010-07-13 12 views
10

मुझे पाइथन में हुई त्रुटि से त्रुटि संख्या प्राप्त करने की आवश्यकता है।त्रुटि की त्रुटि संख्या प्राप्त करना

पूर्व;

try: 
    sftp.put(local_path,target_path)  
except (IOError,OSError),errno: 
    print "Error:",errno 

जो के लिए मैं उत्पादन मिलता है,

Error: [Errno 21] Is a directory 

मैं करने के लिए त्रुटि संख्या का उपयोग करना चाहते हैं: जब Paramiko पैकेज के माध्यम से एक निर्देशिका हस्तांतरण करने के लिए कोशिश कर रहा है, एक त्रुटि कोड के इस टुकड़े के साथ पकड़ा है निर्देशिका और निर्देशिका सामग्री को स्थानांतरित करने के लिए कुछ और कोड में जाएं।

उत्तर

13

आपके प्रश्न को स्पष्ट करने के लिए धन्यवाद।

पायथन में अधिकांश Exception एस "त्रुटि संख्या" नहीं है। एक अपवाद (कोई यमक इरादा) HTTPError अपवाद उदाहरण के लिए, कर रहे हैं:

import urllib2 
try: 
    page = urllib2.urlopen("some url") 
except urllib2.HTTPError, err: 
    if err.code == 404: 
     print "Page not found!" 
    else: 
     ... 

एक और अपवाद (के रूप में bobince द्वारा नोट) EnvironmentError रों हैं:

import os 
try: 
    f=open("hello") 
except IOError, err: 
    print err 
    print err.errno 
    print err.strerror 
    print err.filename 

आउटपुट

[Errno 2] No such file or directory: 'hello' 
2 
No such file or directory 
hello 
+0

यह वही था जो मैं ढूंढ रहा था! धन्यवाद, टिम। – fixxxer

+0

ओएसईआरआरआर के लिए नोट, ऐसा लगता है कि ये ** सभी कोई नहीं ** (इरनो समेत) जब तक कम से कम दो तर्क अपवाद पर निर्दिष्ट नहीं होते हैं, फ़ाइल नाम वैकल्पिक तीसरे तर्क के साथ होता है। –

4

आप तो errno.h त्रुटि संख्याओं के बारे में बात कर रहे हैं, आप उन्हें अपवाद ऑब्जेक्ट पर errno संपत्ति से प्राप्त कर सकते हैं, लेकिन केवलपर(जिसमें OSError, IOError और WindowsError शामिल हैं)।

विशेष रूप से WindowsError पर आपको एक Windows-विशिष्ट त्रुटि संख्या वाला winerror संपत्ति भी मिल जाएगी। (हालांकि आप इन्हें अक्सर इनमें से एक नहीं देखते हैं, क्योंकि पाइथन सीधे Win32 एपीआई का उपयोग अपेक्षाकृत कम ही करता है।)

0

errno पैकेज भी है, जो कोड में जादू संख्याओं को संभालने के साथ त्रुटि कोड के साथ काम करने की अनुमति देता है । यहां एक उदाहरण देखें: Are Python error numbers associated with IOError stable?

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