当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《是否存在从Python的OSError获取信息的跨平台方式?》经验,为你挑选了1个好方法。

例如,在一个简单的目录创建操作中,我可以像这样制作一个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或"文件存在"将始终意味着相同的事情,以便我可以根据情况采取不同的行动?

(这是在另一个问题中出现的.)



1> Brian..:

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'


如果它不是"EEXIST",那么可能最好再加上原来的例外.
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有