2009-07-15 24 views
16

सी perror और errno, जो प्रिंट और स्टोर पिछले त्रुटि का सामना किया है। फाइल आईओओ करते समय यह सुविधाजनक है क्योंकि मुझे fstat() को प्रत्येक फ़ाइल को fsten() को तर्क देने में विफल नहीं है, जिससे उपयोगकर्ता को उपस्थित होने का कारण बताया गया है।अजगर अपवाद हैंडलिंग

मैं सोच रहा था क्या जब शान से अजगर में IOError अपवाद हैंडलिंग errno हड़पने के लिए उचित तरीका है?

 
In [1]: fp = open("/notthere") 
--------------------------------------------------------------------------- 
IOError         Traceback (most recent call last) 

/home/mugen/ in() 

IOError: [Errno 2] No such file or directory: '/notthere' 


In [2]: fp = open("test/testfile") 
--------------------------------------------------------------------------- 
IOError         Traceback (most recent call last) 

/home/mugen/ in() 

IOError: [Errno 13] Permission denied: 'test/testfile' 


In [5]: try: 
    ...:  fp = open("nothere") 
    ...: except IOError: 
    ...:  print "This failed for some reason..." 
    ...:  
    ...:  
This failed for some reason... 

उत्तर

26

अपवाद एक errno विशेषता है:

try: 
    fp = open("nothere") 
except IOError as e: 
    print(e.errno) 
    print(e) 
23

यहाँ कैसे आप यह कर सकते है। कुछ उपयोगिताओं के लिए errno मॉड्यूल और os.strerror फ़ंक्शन भी देखें।

import os, errno 

try: 
    f = open('asdfasdf', 'r') 
except IOError as ioex: 
    print 'errno:', ioex.errno 
    print 'err code:', errno.errorcode[ioex.errno] 
    print 'err message:', os.strerror(ioex.errno) 

IOError बारे में अधिक जानकारी विशेषताओं, आधार वर्ग EnvironmentError देखें:

+1

स्वीकार किए जाते हैं जवाब की तुलना में बेहतर! – RichVel

+0

'ioex.strerror'' os.strerror (ioex.errno) '(पायथन 2.7) – Dannid

20
try: 
    fp = open("nothere") 
except IOError as err: 
    print err.errno 
    print err.strerror 
+9

के बराबर प्रतीत होता है यह अब पसंदीदा वाक्यविन्यास है, आजकल इस प्रश्न को देखने वाले लोगों के लिए एक FYI ... – 2rs2ts

+1

पायथन 3 में काम करता है यदि आप प्रिंट पर ब्रेसिज़ का उपयोग करते हैं – 2114L3

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