Управление предупреждениями Python - PullRequest
4 голосов
/ 11 сентября 2009

Хотелось бы, чтобы какое-то предупреждение появлялось в виде ошибок, но только в первом случае. Как это сделать?

Я читаю http://docs.python.org/library/warnings.html и не знаю, как совместить эти два типа поведения.

1 Ответ

7 голосов
/ 11 сентября 2009

Глядя на код файла warnings.py, вы не можете назначить более одного действия фильтра предупреждению, и вы не можете (легко) определить свои собственные действия, например, "lift_once".

Однако, если вы хотите выдать предупреждение как исключение, но только один раз, это означает, что вы перехватываете исключение. Почему бы не добавить в ваше предложение исключение строку, которая устанавливает действие «игнорировать» для этого конкретного предупреждения?

#!/usr/bin/python

import warnings

warnings.filterwarnings('error','Test')
for i in range(2):
  try:
    warnings.warn('Test');
  except UserWarning, e:
    print "Error caught"
    warnings.filterwarnings('ignore','Test')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...