Gestione delle eccezioni in Python | Test ed eccezione in Python

Contenuti

introduzione

Los errores son la pesadilla de la existencia de un programador. Escribes un fragmento de código increíble, estás listo para ejecutarlo y construir un modelo de aprendizaje automático poderoso, y luego puf. Python arroja un error inesperado, poniendo fin a su esperanza de una ejecución rápida del código.

Todos y cada uno de nosotros se ha enfrentado a este problema y ha salido de él como un mejor programador. Enfrentar errores y errores es lo que aumenta nuestra confianza a largo plazo y nos enseña lecciones valiosas a lo largo del camino.

exception-handling-3578609

Tenemos algunas reglas al escribir programas en cualquier lenguaje de programación, como no usar un espacio al definir un nombre de variabile, agregar dos puntos (:) después de la instrucción if, e così via. Si no seguimos estas reglas, nos encontramos con errores de sintaxis y nuestro programa se niega a ejecutarse hasta que eliminemos esos errores.

Pero hay ocasiones en las que el programa es sintácticamente correcto y todavía arroja un error cuando intentamos ejecutar el programa. ¿Que está pasando aqui? Bene, estos errores detectados durante la ejecución se denominan excepciones. Y lidiar con estos errores se llama manejo de excepciones.

Hablaremos sobre el manejo de excepciones en Chiodo ¡aquí!

Sommario

  1. Ventajas del manejo de excepciones
  2. Excepciones comunes
  3. Declaración de prueba y excepción
  4. Otra declaración
  5. Finalmente declaración
  6. Caso de uso de la vida real de manejo de excepciones

Ventajas del manejo de excepciones

¿Por qué debería aprender a manejar excepciones? Déjame responder eso usando un argumento de dos puntas:

  1. Supongamos que ha escrito un script para leer miles de archivos presentes en varios directorios. Ora, puede haber algún tipo de error allí, como que falta un tipo de archivo o tiene un formato incorrecto o está disponible en diferentes extensiones. Quindi, no es posible abrir todos los archivos y escribir un script en consecuencia. El manejo de excepciones nos permite definir múltiples condiciones. Ad esempio, si el formato es incorrecto, corríjalo primero y luego intente leer el archivo. Altrimenti, omita la lectura de ese archivo y cree un archivo de registro para que podamos tratarlo más tarde.
  2. Al secondo posto, digamos que estamos extrayendo datos de restaurantes de un sitio web y nuestro script busca el nombre, las reseñas y la dirección del restaurante. Per qualche ragione, falta la dirección del restaurante en el sitio web. In questo caso, si no estamos manejando las excepciones, nuestro script puede detenerse en el medio, por lo que mientras recopila datos en una gran cantidad, es esencial que manejemos las excepciones.

Excepciones comunes

Aquí hay una lista de las excepciones comunes que encontrará en Python:

  • ZeroDivisionError: Se eleva cuando intentas dividir un número por cero
  • ImportError: Se genera cuando intenta importar la biblioteca que no está instalada o ha proporcionado el nombre incorrecto
  • IndexError: Se genera cuando no se encuentra un indice en una secuencia. Ad esempio, si la longitud de la lista es 10 y está intentando acceder al undécimo índice de esa lista, obtendrá este error.
  • IndentationError: Se eleva cuando la sangría no se especifica correctamente
  • ValueError: Se genera cuando la función incorporada para un tipo de datos tiene el tipo válido de argumentos, pero los argumentos tienen valores no válidos especificados
  • Exception: Clase base para todas las excepciones. Si no está seguro de qué excepción puede ocurrir, puede usar la clase base. Se encargará de todos ellos

Puede leer sobre excepciones más comunes qui.

Gestione delle eccezioni in Python: declaración de prueba y excepción

Definamos una función para dividir dos números un e B. Funcionará bien si el valor de b es distinto de cero, pero generará un error si el valor de b es cero:

screenshot-from-2020-04-09-13-18-15-3143589

Podemos manejar esto usando el tratar e tranne dichiarazione. Primo, se ejecutará la cláusula try, que son las declaraciones entre las palabras clave try y except.

Si no se produce ninguna excepción, se omitirá la cláusula except. In secondo luogo, si se produce una excepción durante la ejecución de la cláusula try, se omitirán el resto de las declaraciones try:

Gestione delle eccezioni in Python: declaración Else

e pitone, también podemos instruir a un programa para que ejecute ciertas líneas de código si no ocurre ninguna excepción usando el il riposo clausola. Ora, si no ocurre ninguna excepción en el código anterior, queremos imprimir¡¡No se produjo ningún error !!”.

Vediamo come farlo:

Gestione delle eccezioni in Python: declaración finalmente

Ora, ¿qué pasa si necesitamos algún tipo de acción que se ejecute si el error ocurrió o no (como mantener registros)? Per questo, tenemos el Finalmente cláusula en Python. Siempre se ejecutará si el programa obtiene alguna de las excepciones o no.

Veremos cómo podemos utilizar el Finalmente cláusula para escribir los registros más adelante en este artículo.

Ora, nell'esempio sopra, quiero imprimir el valor de un e B después de cada ejecución, independientemente de si se produjo el error o no. Veamos cómo hacer eso:

Caso de uso de la vida real de manejo de excepciones en Python

Fino ad ora, hemos visto el manejo de excepciones en algunos datos aleatorios. ¿Qué tal subir la palanca un poco y entender esto usando un ejemplo de la vida real?

Tenemos datos que contienen los detalles de los empleados, come la tua educazione, età, número de capacitaciones realizadas, eccetera. Los datos se dividen en varios directorios por región. Los detalles de los empleados que pertenecen a la misma región se almacenan en el mismo archivo.

Ora, nuestra tarea es leer todos los archivos y concatenarlos para formar un solo archivo. Comencemos por importar algunas de las bibliotecas necesarias.

Obtener la estructura del directorio

Para ver la estructura del directorio, useremo il glob biblioteca y para leer los archivos CSV, Useremo il panda Biblioteca:

Ver la estructura del directorio usando el glob.glob función y la ruta del directorio de destino. Puede descargar la estructura del directorio qui.

screenshot-from-2020-04-08-22-16-19-9966985

Podemos ver que los nombres de las carpetas están representados como algunos números y en el siguiente paso pasaremos por cada uno de los directorios y veremos los archivos presentes:

screenshot-from-2020-04-08-22-19-42-7921371

En cada una de las carpetas, hay un archivo CSV presente que contiene los detalles de los empleados de esa región en particular. Puede abrir y ver cualquier archivo CSV. A continuación se muestra la imagen de cómo se ven los datos en el region_1.csv procedimento. Contiene detalles de los empleados que pertenecen a la región 1:

screenshot-from-2020-04-08-22-21-42-1889046

Leer los archivos

Ora, sabemos que hay un patrón en la estructura de directorio y nombre de archivo. En el directorio Nord, hay un nombre de archivo CSV region_n regalo. Entonces ahora intentaremos leer todos estos archivos usando un bucle.

Sabemos que el número máximo es 34, por lo que usaremos un di continuo para iterar y leer los archivos en orden:

screenshot-from-2020-04-08-22-27-22-5262966

screenshot-from-2020-04-08-22-28-22-4584987

Puedes ver que el archivo region_7 no es presente. Quindi, una de las formas más sencillas de lidiar con esto es poner un e condición en el programasi el nombre del directorio es 7 luego omita la lectura de ese archivo.

Ma, ¿y si tenemos que leer miles de archivos juntos? Sería una tarea tediosa actualizar la condición if cada vez que obtenemos un error.

Qui, usaremos la declaración try y except para manejar los errores. Si hay alguna excepción durante el tiempo de ejecución mientras leemos cualquier archivo, simplemente saltaremos ese paso y continuaremos leyendo la siguiente carpeta. Imprimiremos el nombre del archivo con¡Archivo no encontrado!” si el error es FileNotFoundError e imprima el nombre del archivo con¡Otro error!” si ocurre cualquier otro error.

screenshot-from-2020-04-08-22-38-03-6851291

directory-7117961

Podemos ver que obtuvimos otro error en el archivo número 32. Intentemos leer este archivo por separado:

screenshot-from-2020-04-08-22-40-28-8400685

Hay algunos problemas con el formato de File 32. Si abre el archivo region_32.csv, verá que hay algunos comentarios agregados en la parte superior del archivo y podemos leer ese archivo usando el saltos parametro:

screenshot-from-2020-04-08-22-42-19-5666066

Veamos cómo manejar esto.

Declaraciones Try, Except y Else

Crearemos dos variables booleanas: error de análisis, archivo no encontradoe inicializar ambos como Falso al comienzo de cada iteración. Quindi, si obtenemos FileNotFoundError, entonces estableceremos archivo no encontrado como Verdadero.

Dopo, imprimiremos ese archivo en particular como faltante y saltaremos esa iteración. Si conseguimos ParserError, entonces estableceremos error de análisis como Verdadero e imprima que el archivo en particular tiene un formato incorrecto y vuelva a leer el archivo usando el saltos parametro.

Ora, si no se produce ninguna excepción, se ejecutará el código de la instrucción else. En la declaración else, agregaremos el marco de datos a la lista de marcos de datos:

Declaración de prueba, eccezione, otra y finalmente

Supongamos que desea crear un archivo de registro para realizar un seguimiento de qué archivos son correctos y cuáles tienen errores. Este es un caso de uso de la declaración finalmente. Ya sea que obtenga el error o no, la sentencia finalmente se ejecutará.

Entonces en el Finalmente clausola, escribiremos en el archivo con respecto al estado del archivo en cada iteración:

Note finali

Utilizo el manejo de excepciones al extraer datos de varias páginas web. Me encantaría saber cómo usa el manejo de excepciones, quindi commenta qui sotto con i tuoi pensieri e condividili con la community.

Se hai trovato questo articolo informativo, Condividilo con i tuoi amici e commenta qui sotto le tue domande e i tuoi commenti. Di seguito ho elencato alcuni fantastici articoli relativi a Python e alla scienza dei dati come riferimento:

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.