(Python) 未显示多个引发的 ValueErrors
Posted
技术标签:
【中文标题】(Python) 未显示多个引发的 ValueErrors【英文标题】:(Python) Multiple raised ValueErrors not displayed 【发布时间】:2021-01-09 09:56:10 【问题描述】:我正在使用具有多个内置引发的 ValueErrors 的脚本,该脚本循环遍历文件夹中的某些文件。它会检查条件,如果发生这种情况,应该为每个循环的文件报告错误消息。
但是,它只显示一个文件的一个 ValueError 消息,而不是所有错误。它仍然为其他文件执行循环。例如,我有文件 a 和 b 都应该生成错误,但 python 只显示文件 a 的错误消息。我已经通过删除文件 a 来检查它,并且在运行脚本后它确实会为文件 b 生成一条错误消息
我的部分代码是
for f_name in os.listdir(path):
if f_name.endswith('.xls'):
...
if a < 0:
raise ValueError('error')
else:
xxx
有人知道如何显示所有错误吗?
【问题讨论】:
请注意,raise
将立即拆除堆栈,直到下一个匹配的 except:
。您的代码仅引发一个错误,因为循环已被第一个异常中止。
【参考方案1】:
我认为你应该尝试和except语句来找出哪个文件引发了异常。 使用这个。
try:
if a < 0:
raise ValueError('error')
else:
xxx
except ValueError:
print(a) #this will print which file isn't satisfying the condition
【讨论】:
以上是关于(Python) 未显示多个引发的 ValueErrors的主要内容,如果未能解决你的问题,请参考以下文章
在 python inotify 中未引发 IN_Q_OVERFLOW 事件
AWS SAM CLI 全新安装引发错误 - dyld:未加载库:@executable_path/../.Python