Python 2.7:如何从异常对象提取文件名
在提到这一点时,它说 请注意,文件名作为异常的filename属性可用 反对 但是当我尝试使用代码调用错误对象时: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
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)