2008-11-07 73 views
36

在例如一个简单的目录创建操作,我可以作出这样的OSERROR:是否有从Python的OSError获取信息的跨平台方式?

(Ubuntu Linux操作系统)

​​

现在我能赶上这个错误是这样的:

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

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

(这想出了during another question。)

回答

52

errno属性上的错误应该是在所有平台上是相同的。你会在Windows上得到WindowsError例外,但由于这是OSError的一个子类,所以相同的“except OSError:”块将会捕获它。 Windows确实有自己的错误代码,这些代码可以通过.winerror访问,但.errno属性应该仍然存在,并且可以跨平台方式使用。

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

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

您也可以进行反向查找(找出你应该使用什么样的代码)与errno.errorcode。那就是:

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

也适用于Windows。 – 2008-11-08 01:25:14

相关问题