是否有从Python的OSError获取信息的跨平台方式?

例如,在一个简单的目录创build操作,我可以这样做一个OSError:

(Ubuntu Linux)

>>> import os >>> os.mkdir('foo') >>> os.mkdir('foo') Traceback (most recent call last): File "<stdin>", line 1, in <module> OSError: [Errno 17] File exists: 'foo' 

现在我可以捕捉到这样的错误:

 >>> import os >>> os.mkdir('foo') >>> try: ... os.mkdir('foo') ... except OSError, e: ... print e.args ... (17, 'File exists') 

是否有一种跨平台的方式,我可以知道17或“存在的文件”总是意味着相同的东西,这样我可以根据情况采取不同的行为?

(这是另一个问题 。)

errno上的errno属性在所有平台上都应该是一样的。 你将在Windows上得到WindowsErrorexception,但是因为这是OSError的子类,所以“ except OSError:except OSError: 。 Windows确实有自己的错误代码,这些代码可以作为.winerror访问,但是.errno属性应该仍然存在,并且可以跨平台的方式使用。

各种错误代码的符号名称可以在errno模块中find。 例如,

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

您也可以使用errno.errorcode执行反向查找(找出您应该使用的代码)。 那是:

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