Ale*_*x58 6 python exception-handling errno
我有以下代码:
except(OSError) as (errno, strerror, filename):
print "OSError [%d]: %s at %s" % (errno, strerror, filename)
Run Code Online (Sandbox Code Playgroud)
除非遇到OSError num,否则它运行良好.123(The file name, directory name, or volume label syntax is incorrect
).然后我在除了代码行后得到以下错误:
ValueError: need more than 2 values to unpack
Run Code Online (Sandbox Code Playgroud)
它通过不使用filename
属性来解决.但是我的要求阻止我不使用此属性.
还有另外一种方法吗?
Sen*_*ran 26
我没有看到这种异常处理,你将Exception对象的属性传递给as子句.
通常,您处理except ExceptionObject as 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
Run Code Online (Sandbox Code Playgroud)