В Python 2.6 можно подавлять предупреждения из модуля предупреждений с помощью
with warnings.catch_warnings(): warnings.simplefilter("ignore") fxn()
Версии Python до 2.6 не поддерживают with однако, поэтому мне интересно, есть ли альтернативы вышеупомянутому, которые будут работать с версиями до 2.6?
with
Это похоже:
# 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 при таком использовании.
try/finally
В зависимости от того, какую минимальную версию вам нужно поддерживать при использовании Python 2.5
from __future__ import with_statement
может быть вариантом, иначе вам, вероятно, придется вернуться к тому, что предложил Джон.