Python 2.7:如何从异常对象提取文件名

Python 2.7:如何从异常对象提取文件名,python,exception,object,python-2.7,filenames,Python,Exception,Object,Python 2.7,Filenames,在提到这一点时,它说 请注意,文件名作为异常的filename属性可用 反对 但是当我尝试使用代码调用错误对象时: errorIndex = fileList.index(os.error.filename) 它给了我一个错误: ValueError: <member 'filename' of 'exceptions.EnvironmentError' objects> is not in list filename属性将位于异常的特定实例上。你需要像这样的东西: excep

在提到这一点时,它说

请注意,文件名作为异常的filename属性可用 反对

但是当我尝试使用代码调用错误对象时:

 errorIndex = fileList.index(os.error.filename)
它给了我一个错误:

ValueError: <member 'filename' of 'exceptions.EnvironmentError' objects> is not in list

filename属性将位于异常的特定实例上。你需要像这样的东西:

except os.error as e:
    errorIndex = fileList.index(e.filename)
就目前编写的代码而言,您的代码让我感到紧张。除了块之外,
块中似乎有很多代码。通常,除了
块之外,在
块中要执行的所有操作都是处理试图处理的特定错误所需的最小值。同样,您的
try
块很大,这意味着其中可能会出现许多不同的错误。通常,您应该使
try
块尽可能小,以便只尝试处理有限的可能错误集


如果您想捕获IOError,您需要使用
将IOError之外的代码作为e
来编写它。您可以使用
except(IOError,OSError)作为e
来捕获任何一种错误。

看起来您试图在error类中访问它,而实际错误中没有。你能把剩下的代码发布到你使用的地方吗?@BrenBarn我添加了所有相关的代码。我希望这有帮助。你需要捕获一个特定的异常。谢谢你的输入。当我这样做时,它似乎完全忽略了
块,而我只是得到了一个IOerror,就好像它不在那里一样:
IOerror:无法识别图像文件
。第一次读取文件时,错误来自for循环。你知道为什么会发生这种情况吗?@nichosukiennik:看我编辑的答案。你的问题没有提到任何关于IOError的问题。如果您想捕获IOError,您需要执行除IOError之外的
。我知道这里出了什么问题。我将除os.error外的
替换为e:
,将除IOError外的
替换为e:
。现在我发现了一个新错误:
ValueError:None不在列表中
@nichosukiennik:您的问题超出了最初的问题范围。你需要试着调试你的代码来找出为什么它会引发这个错误。这可能不是你认为的原因。我建议您将
try
块缩小,只包括您真正想要捕获其错误的代码。@nichosukiennik:没问题。如果你遇到了一堵墙,你可以就另一个问题单独问一个问题。
except os.error as e:
    errorIndex = fileList.index(e.filename)