Ловля предварительного Python предупреждений 2.6

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

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

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

7
задан astrofrog 13 January 2010 в 19:42
поделиться

2 ответа

Это похоже на:

# 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

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

3
ответ дан 7 December 2019 в 18:43
поделиться

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

from __future__ import with_statement

from __future__ import with_statement

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

-1
ответ дан 7 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: