Ловля предупреждений pre-python 2.6 - PullRequest
7 голосов
/ 13 января 2010

В Python 2.6 можно подавлять предупреждения из модуля предупреждений с помощью

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

Версии Python до 2.6 не поддерживают with однако, поэтому мне интересно, есть ли альтернативы вышеупомянутому, которые будут работать с версиями до 2.6?

Ответы [ 2 ]

3 голосов
/ 13 января 2010

Это похоже:

# Save the existing list of warning filters before we modify it using simplefilter().
# Note: the '[:]' causes a copy of the list to be created. Without it, original_filter
# would alias the one and only 'real' list and then we'd have nothing to restore.
original_filters = warnings.filters[:]

# Ignore warnings.
warnings.simplefilter("ignore")

try:
    # Execute the code that presumably causes the warnings.
    fxn()

finally:
    # Restore the list of warning filters.
    warnings.filters = original_filters

Редактировать: Без try/finally исходные фильтры предупреждений не будут восстановлены, если fxn () выдаст исключение. См. PEP 343 для получения дополнительной информации о том, как оператор with служит для замены try/finally при таком использовании.

0 голосов
/ 13 января 2010

В зависимости от того, какую минимальную версию вам нужно поддерживать при использовании Python 2.5

from __future__ import with_statement

может быть вариантом, иначе вам, вероятно, придется вернуться к тому, что предложил Джон.

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