Python OSError';s文件名属性不可用?

Python OSError';s文件名属性不可用?,python,exception-handling,errno,Python,Exception Handling,Errno,我有以下代码: except(OSError) as (errno, strerror, filename): print "OSError [%d]: %s at %s" % (errno, strerror, filename) 除非满足OSError num.123(文件名、目录名或卷标语法不正确),否则它运行得很好。然后,在EXPECT代码行中出现以下错误: ValueError: need more than 2 values to unpack 通过不使用filename属性来解

我有以下代码:

except(OSError) as (errno, strerror, filename):
print "OSError [%d]: %s at %s" % (errno, strerror, filename)
除非满足OSError num.123(
文件名、目录名或卷标语法不正确
),否则它运行得很好。然后,在EXPECT代码行中出现以下错误:

ValueError: need more than 2 values to unpack
通过不使用
filename
属性来解决此问题。但是,我的需求阻止我不使用此属性


还有其他方法吗?

我没有见过这种异常处理,您将异常对象的属性传递给as子句

通常情况下,将
除ExceptionObject之外的对象处理为e
,并将属性处理为通常处理对象属性的方式

OSError包含一个errno属性是来自errno的数字错误代码,strerror属性是相应的字符串,对于涉及文件系统路径的异常(例如chdir()或unlink()),异常实例将包含第三个属性filename,即传递给函数的文件名

import os
try:
    os.chdir('somenonexistingdir')
except OSError as e:
    print e.errno
    print e.filename
    print e.strerror

“我没有见过这种异常处理”=最好的说法是你做错了。