Is there a cross-platform way of getting information from Python’s OSError?

The errno attribute on the error should be the same on all platforms. You will get WindowsError exceptions on Windows, but since this is a subclass of OSError the same “except OSError:” block will catch it. Windows does have its own error codes, and these are accessible as .winerror, but the .errno attribute should still be present, and usable in a cross-platform way.

Symbolic names for the various error codes can be found in the errno module.
For example,

import os, errno
try:
    os.mkdir('test')
except OSError, e:
    if e.errno == errno.EEXIST:
        # Do something

You can also perform the reverse lookup (to find out what code you should be using) with errno.errorcode. That is:

>>> errno.errorcode[17]
'EEXIST'

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)