Python, отключить фильтр предупреждений - PullRequest
0 голосов
/ 08 октября 2018

Как отключить фильтрацию предупреждений?

Я хотел бы вывести несколько раз одно и то же предупреждение, но фильтр в библиотеке избегает выводить более одного раза одно и то же предупреждение.

import warnings

for i in range(2):
    warnings.warn("warning message")

вывод:

C:\Users\me\my_script.py:4: UserWarning: warning message
  warnings.warn("warning message")

Документация находится здесь: https://docs.python.org/2/library/warnings.html

Очевидно, я должен установить "always" в кортеже на входе фильтра, я нене знаю, как это сделать, и где получить доступ к этому кортежу.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

В python 2.7.15rc1, чтобы отключить все предупреждения, я использовал следующие две строки кода:

import warnings
warnings.simplefilter("ignore")

Надеюсь, это полезно

0 голосов
/ 08 октября 2018

Вы можете обновить фильтры предупреждений с помощью функций warnings.simplefilter() и warnings.filterwarnings() ;из вводного модуля:

Определение того, следует ли выдавать предупреждающее сообщение, контролируется фильтром предупреждений, который представляет собой последовательность соответствующих правил и действий.Правила могут быть добавлены в фильтр путем вызова filterwarnings() и восстановления его состояния по умолчанию путем вызова resetwarnings().

Чтобы все предупреждения повторялись после первой проблемы, используйте

warnings.simplefilter('always')

Вы можете расширить это, добавив больше деталей для фильтрации.Например, ваши вызовы warnings.warn() не указывают категорию, поэтому по умолчанию используется warnings.UserWarning;Вы можете добавить это к фильтру:

warnings.simplefilter('always', warnings.UserWarning)

и т. д.Вы также можете использовать ключевые аргументы, если хотите указать только некоторые аргументы фильтра, например append=True.

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