Python在捕获异常时,如何获取行号?

Ken*_*Ken 3 python yaml

我知道还有另一个帖子,但它没有解决我的问题,请阅读我的问题!

基本上,我正在解析一个YAML文件,以确保它具有我想要的所有正确的键和值.如果YAML文件具有需要的错误值或密钥,那么我想打印一条消息,指出错误值或键的位置.

示例:
假设这个YAML文件:

杂货:
苹果:奶奶
:脱脂
面包:小麦

让我们说我期待'整体'作为'牛奶'的价值.如果该行是第3行,如何打印一条消息"错误:在LINE 3上无效值等等"?

非常感谢!

Jak*_*yer 5

从PyYaml文档

>>> try:
...     yaml.load("unbalanced blackets: ][")
... except yaml.YAMLError, exc:
...     if hasattr(exc, 'problem_mark'):
...         mark = exc.problem_mark
...         print "Error position: (%s:%s)" % (mark.line+1, mark.column+1)

Error position: (1:22)
Run Code Online (Sandbox Code Playgroud)