1. La advertencia no es una excepción.
¿Utiliza con frecuencia algunas bibliotecas del sistema o módulos de terceros, y habrá algunos mensajes de advertencia que no son ni excepciones ni errores?
Estos mensajes de advertencia, a veces muchos, pueden causar fácilmente algunos errores de juicio para los principiantes, que piensan que el programa es incorrecto.
De hecho, no es así. Las excepciones y errores son algunos problemas en el programa, pero la advertencia es diferente. Su urgencia es muy baja, por lo que la mayoría de las advertencias se pueden ignorar directamente.
Si no desea mostrar esta información de alarma, puede agregar directamente el parámetro -W ignorar parámetro, y ya no se mostrará.
2. ¿Se pueden detectar las advertencias?
Solo se pueden detectar las excepciones de error, pero después de una serie de operaciones, puede convertir estas advertencias en excepciones.
De esta manera, puede atraparlos como una excepción.
Sin ninguna configuración, la advertencia se imprimirá directamente en el terminal.
3. Método uno para detectar una advertencia
Hay una serie de filtros en las advertencias.
Cuando especifica como error, la advertencia coincidente se convertirá en una excepción.
Entonces puede captar la advertencia por excepción.
import warnings
warnings.filterwarnings('error')
try:
warnings.warn("deprecated", DeprecationWarning)
except Warning as e:
print(e)
Después de correr, el efecto es el siguiente
4. El segundo método para detectar advertencias
Si no desea configurarlo en el código, convierta la advertencia en una excepción.
import warnings
try:
warnings.warn("deprecated", DeprecationWarning)
except Warning as e:
print(e)
Al ejecutar, simplemente agregue un parámetro -W error, puede lograr el mismo efecto
$ python3 -W error demo.py
deprecated
5. El tercer método para detectar advertencias
Además de los métodos anteriores, las advertencias también vienen con un administrador de contexto para capturar las advertencias.
Cuando agrega record = True, devolverá una lista, en la que se almacenan todas las advertencias capturadas, lo asigno a w, y luego se puede imprimir.
import warnings
def do_warning():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings(record=True) as w:
do_warning()
if len(w) >0:
print(w[0].message)
Después de correr, el efecto es el siguiente
Todavía quiero recomendar el grupo de aprendizaje de Python que construí yo mismo : 705933274 , todos los cuales están aprendiendo Python. Si quieren aprender o están aprendiendo Python, pueden unirse. Todos son parte del desarrollo de software y comparten productos secos de de vez en cuando (solo relacionado con el desarrollo de software de Python), incluida una copia de los últimos materiales avanzados de Python y la enseñanza basada en cero compilada por mí en 2021. ¡Bienvenidos amigos que están en un nivel avanzado e interesados en Python para que se unan!