
enmarcador
Estoy trabajando con un código que arroja muchas (para mí en este momento) advertencias inútiles usando el warnings
Biblioteca. Leyendo (/ escaneando) la documentación solo encontré una manera para deshabilitar las advertencias para funciones individuales. Pero no quiero cambiar mucho del código.
¿Hay una bandera como python -no-warning foo.py
?
¿Qué recomendarías?

Miguel
mira el Advertencias de supresión temporal sección de los documentos de Python:
Si está utilizando un código que sabe que generará una advertencia, como una función obsoleta, pero no desea ver la advertencia, entonces es posible suprimir la advertencia usando el catch_warnings
administrador de contexto:
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
No lo apruebo, pero podrías simplemente suprimir todas las advertencias con este:
import warnings
warnings.filterwarnings("ignore")
Ex:
>>> import warnings
>>> def f():
... print('before')
... warnings.warn('you are warned!')
... print('after')
...
>>> f()
before
<stdin>:3: UserWarning: you are warned!
after
>>> warnings.filterwarnings("ignore")
>>> f()
before
after

pavel anossov
ahí está el -W
opción.
python -W ignore foo.py

holger bille
También puede definir una variable de entorno (nueva función en 2010, es decir, Python 2.7)
export PYTHONWARNINGS="ignore"
Prueba así: Por defecto
$ export PYTHONWARNINGS="default"
$ python
>>> import warnings
>>> warnings.warn('my warning')
__main__:1: UserWarning: my warning
>>>
Ignorar advertencias
$ export PYTHONWARNINGS="ignore"
$ python
>>> import warnings
>>> warnings.warn('my warning')
>>>
Para advertencias de desaprobación echa un vistazo a cómo-ignorar-las-advertencias-de-desaprobación-en-python
Copiado aquí…
De la documentación de la warnings
módulo:
#!/usr/bin/env python -W ignore::DeprecationWarning
Si estás en Windows: pasa -W ignore::DeprecationWarning
como argumento para Python. Sin embargo, es mejor resolver el problema, lanzando a En t.
(Tenga en cuenta que en Python 3.2, las advertencias de obsolescencia se ignoran de forma predeterminada).
O:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=DeprecationWarning)
import md5, sha
yourcode()
Ahora todavía obtienes todos los demás DeprecationWarning
s, pero no los causados por:
import md5, sha

Chris_Rands
Esta es una vieja pregunta, pero hay una nueva guía en PEP 565 que para desactivar todas las advertencias si está escribiendo una aplicación de python, debe usar:
import sys
import warnings
if not sys.warnoptions:
warnings.simplefilter("ignore")
La razón por la que se recomienda esto es que desactiva todas las advertencias de forma predeterminada, pero permite que se vuelvan a activar a través de python -W
en la línea de comando o PYTHONWARNINGS
.

Prajot Kuvalekar
Para no hacerlo complicado, solo usa estas dos líneas
import warnings
warnings.filterwarnings('ignore')

usuario3226167
Si sabe cuáles son las advertencias inútiles que suele encontrar, puede filtrarlas por mensaje.
import warnings
#ignore by message
warnings.filterwarnings("ignore", message="divide by zero encountered in divide")
#part of the message is also okay
warnings.filterwarnings("ignore", message="divide by zero encountered")
warnings.filterwarnings("ignore", message="invalid value encountered")

danny bullis
Cuando todo lo demás falla, usa esto: https://github.com/polvoazul/cállate
pip install shutup
luego agregue a la parte superior de su código:
import shutup;
shutup.please()
Descargo de responsabilidad: Soy el dueño de ese repositorio. Lo escribí después de la quinta vez que lo necesitaba y no pude encontrar nada simple que funcionara.
@MartinSamson Generalmente estoy de acuerdo, pero hay casos legítimos para ignorar las advertencias. Obtengo varios de estos al usar la sintaxis Xpath válida en defusedxml:
FutureWarning: This search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to [this other thing]
. Preferiría ignorar las advertencias ahora y esperar a que se arreglen silenciosamente que escribir un código innecesariamente feo solo para evitar una advertencia inofensiva.– Pedro
22 de diciembre de 2016 a las 16:56
desactivar advertencias específicas: stackoverflow.com/questions/9134795/…
– usuario3226167
30 de noviembre de 2018 a las 8:48