How to get the errno of an IOError?

Different exceptions can also be tested for in the same 'except' clause, e.g.

try:
    serial_port.open()
except (AttributeError, SerialException) as e:
    print('cannot open serial port: {}'.format(e))

Here's how you can do it. Also see the errno module and os.strerror function for some utilities.

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)
  • http://docs.python.org/library/errno.html
  • http://docs.python.org/library/os.html

For more information on IOError attributes, see the base class EnvironmentError:

  • http://docs.python.org/library/exceptions.html?highlight=ioerror#exceptions.EnvironmentError

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

The Exception has an errno attribute:

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