Comment désactiver les avertissements python



Answers

Avez-vous regardé la section supprimer les avertissements des documents python?

Si vous utilisez un code dont vous savez qu'il déclenchera un avertissement, comme une fonction obsolète, mais que vous ne souhaitez pas voir l'avertissement, il est possible de supprimer l'avertissement à l'aide du gestionnaire de contexte catch_warnings:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

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

Je ne le pardonne pas, mais vous pourriez juste surpasser tous les avertissements avec ceci:

import warnings
warnings.filterwarnings("ignore")

Ex:

>>> import warnings
>>> def f():
...  print('before')
...  warnings.warn('you are warned!')
...  print('after')
>>> f()
before
__main__:3: UserWarning: you are warned!
after
>>> warnings.filterwarnings("ignore")
>>> f()
before
after
Question

Je travaille avec le code avec beaucoup d'avertissements inutiles (pour le moment pour moi) en utilisant la bibliothèque des warnings . Lire (/ scanner) la documentation J'ai seulement trouvé un moyen de désactiver les avertissements pour des fonctions uniques . Mais je ne veux pas changer autant de code.

Est-ce qu'il y a peut-être un drapeau comme python -no-warning foo.py ?

Que recommanderais-tu?




C'est une vieille question mais il y a quelques nouvelles directives dans PEP 565 que de désactiver tous les avertissements si vous écrivez une application python que vous devriez utiliser:

import sys
import warnings

if not sys.warnoptions:
    warnings.simplefilter("ignore")

La raison pour laquelle ceci est recommandé est qu'il éteint tous les avertissements par défaut, mais permet de les PYTHONWARNINGS manière cruciale via python -W sur la ligne de commande ou PYTHONWARNINGS .




Links