¿Cómo detecta Python las advertencias? (Nota: no atrapar la excepción)

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!

 

Supongo que te gusta

Origin blog.csdn.net/pyjishu/article/details/114748759
Recomendado
Clasificación