从Python的OSError获取信息的平台方式?
例如,在一个简单的目录创建操作中,我可以像这样创建一个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上获得WindowsError
异常,但由于这是OSError的子类,所以“ except 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'
链接地址: http://www.djcxy.com/p/1595.html
上一篇: platform way of getting information from Python's OSError?