Python при отлове исключений, как я могу получить номер строки? - PullRequest
3 голосов
/ 21 июня 2011

Я знаю, что есть еще один поток по этому вопросу, но это не решило мою проблему, пожалуйста, прочитайте мой вопрос!

По сути, я анализирую файл YAML, чтобы убедиться, что он имеет все правильные ключи и значенияЯ хочу.Если файл YAML имеет неправильное значение или ключ, который ему необходим, то я хочу напечатать сообщение, в котором указано, где находится неправильное значение или ключ.

Пример:
Допустим, для этого файла YAML:

Продовольственные товары:
Яблоки: Бабушка
Молоко: Ским
Хлеб: Пшеница

Допустим, я ожидал, что «Целое» будет значением «Молоко».Если эта строка - строка 3, как мне напечатать сообщение, в котором говорится: «ошибка: недопустимое значение, бла-бла, в строке 3» ??

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 21 июня 2011

Из документации 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)
0 голосов
/ 15 августа 2014

У меня было аналогичное требование к вопросу.Я не смог найти решение на python, но нашел kwalify - http://www.kuwata -lab.com / kwalify .Вы можете использовать его как инструмент командной строки.Это позволяет вам указать ключи и допустимые значения в виде схемы.Затем вы проверяете файл YAML следующим образом:

kwalify -f schema.yaml document.yaml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...