例如,在一个简单的目录创建操作中,我可以像这样制作一个OSError:
(Ubuntu Linux)
>>> import os >>> os.mkdir('foo') >>> os.mkdir('foo') Traceback (most recent call last): File "", line 1, in 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
对错误属性应该是在所有平台上是相同的.您将WindowsError
在Windows上获得异常,但由于这是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'