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

时间:2011-06-20 21:21:10

标签: python yaml

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

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

例:
让我们说这个YAML文件:

  

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

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

非常感谢!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

我对这个问题有类似的要求。我无法找到python解决方案,但找到了kwalify - http://www.kuwata-lab.com/kwalify。您可以将其用作命令行工具。它允许您将键和允许值指定为架构。然后,您可以按如下方式验证YAML文件:

kwalify -f schema.yaml document.yaml