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

1586010002-jmsa.png

On a simple directory creation operation for example, I can make an OSError like this:

(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'

Now I can catch that error like this:

>>> import os

>>> os.mkdir('foo')

>>> try:

... os.mkdir('foo')

... except OSError, e:

... print e.args

...

(17, 'File exists')

Is there a cross-platform way that I can know that that the 17 or the 'File Exists' will always mean the same thing so that I can act differently depending on the situation?

解决方案

The errno attribute on the error should be the same on all platforms. You will get WindowsError exceptions on Windows, but since this is a subclass of OSError the same "except OSError:" block will catch it. Windows does have its own error codes, and these are accessible as .winerror, but the .errno attribute should still be present, and usable in a cross-platform way.

Symbolic names for the various error codes can be found in the errno module.

For example,

import os, errno

try:

os.mkdir('test')

except OSError, e:

if e.errno == errno.EEXIST:

# Do something

You can also perform the reverse lookup (to find out what code you should be using) with errno.errorcode. That is:

>>> errno.errorcode[17]

'EEXIST'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值