Gestion des exceptions en Python | Tester et excepter en Python

Contenu

introduction

Les erreurs sont le cauchemar de l'existence d'un programmeur. Vous écrivez un morceau de code incroyable, vous êtes prêt à l'exécuter et à créer un puissant modèle d'apprentissage automatique, et puis pouf. Python renvoie une erreur inattendue, mettre fin à votre espoir d'exécution rapide du code.

Chacun d'entre nous a été confronté à ce problème et en est sorti meilleur programmeur.. Faire face aux erreurs et aux erreurs est ce qui renforce notre confiance à long terme et nous enseigne de précieuses leçons en cours de route..

gestion des exceptions-3578609

Nous avons quelques règles lors de l'écriture de programmes dans n'importe quel langage de programmation, como no usar un espacio al definir un nombre de variable, ajouter deux points (:) après l'instruction if, et ainsi de suite. Si nous ne suivons pas ces règles, nous rencontrons des erreurs de syntaxe et notre programme refuse de s'exécuter jusqu'à ce que nous supprimions ces erreurs.

Mais il y a des moments où le programme est syntaxiquement correct et renvoie toujours une erreur lorsque nous essayons d'exécuter le programme. Que se passe t-il ici? Bon, ces erreurs détectées lors de l'exécution sont appelées exceptions. Et traiter ces erreurs s'appelle la gestion des exceptions.

Nous parlerons de la gestion des exceptions dans Piton ici!

Table des matières

  1. Avantages de la gestion des exceptions
  2. Exceptions courantes
  3. Exposé de la preuve et exception
  4. Autre déclaration
  5. Enfin déclaration
  6. Cas d'utilisation réel de la gestion des exceptions

Avantages de la gestion des exceptions

Pourquoi devriez-vous apprendre à gérer les exceptions? Permettez-moi de répondre en utilisant un argument à deux volets:

  1. Supposons que vous ayez écrit un script pour lire des milliers de fichiers présents dans divers répertoires. À présent, il peut y avoir une sorte d'erreur là, comme un type de fichier manquant ou au format incorrect ou disponible dans différentes extensions. Dans ce cas, impossible d'ouvrir tous les fichiers et d'écrire le script en conséquence. La gestion des exceptions nous permet de définir plusieurs conditions. Par exemple, si le format est incorrect, corrigez-le d'abord puis essayez de lire le fichier. Au contraire, ignorez la lecture de ce fichier et créez un fichier journal afin que nous puissions le traiter plus tard.
  2. En second lieu, disons que nous extrayons les données d'un restaurant d'un site Web et que notre script recherche le nom, les avis et l'adresse du restaurant. Pour une raison quelconque, l'adresse du restaurant est manquante sur le site. Dans ce cas, si nous ne gérons pas les exceptions, notre script peut s'arrêter au milieu, ainsi en collectant des données en grande quantité, il est essentiel que nous traitions les exceptions.

Exceptions courantes

Voici une liste des exceptions courantes que vous trouverez en Python:

  • ZeroDivisionError: Il augmente lorsque vous essayez de diviser un nombre par zéro
  • ImportError: Levée lorsque vous essayez d'importer la bibliothèque qui n'est pas installée ou que vous avez fourni un mauvais nom
  • IndexError: Se genera cuando no se encuentra un indice en una secuencia. Par exemple, si la longueur de la liste est 10 et vous essayez d'accéder au onzième index de cette liste, vous obtiendrez cette erreur.
  • IndentationError: Levée lorsque l'indentation n'est pas spécifiée correctement
  • ValueError: Levée lorsque la fonction intégrée pour un type de données a le type d'arguments valide, mais les arguments ont des valeurs invalides spécifiées
  • Exception: Classe de base pour toutes les exceptions. Si vous ne savez pas quelle exception peut se produire, vous pouvez utiliser la classe de base. prendra soin d'eux tous

Vous pouvez en savoir plus sur les exceptions les plus courantes ici.

Gestion des exceptions en Python: test et instruction d'exception

Définissons une fonction pour diviser deux nombres une Oui B. Cela fonctionnera bien si la valeur de b est différente de zéro, mais cela générera une erreur si la valeur de b est zéro:

capture d

Nous pouvons gérer cela en utilisant le traiter Oui sauf déclaration. Premier, La clause try sera exécutée, quelles sont les déclarations entre les mots-clés try et except.

Si aucune exception ne se produit, la clause except sera omise. D'un autre côté, si une exception se produit lors de l'exécution de la clause try, le reste des instructions try sera ignoré:

Gestion des exceptions en Python: Autre déclaration

Et Python, Nous pouvons également demander à un programme d'exécuter certaines lignes de code si aucune exception ne se produit en utilisant le le reste clause. À présent, si aucune exception ne se produit dans le code ci-dessus, nous voulons imprimer “Aucune erreur ne s'est produite !!”.

Voyons comment faire cela:

Gestion des exceptions en Python: déclaration enfin

À présent, Que faire si nous avons besoin d'une sorte d'action à exécuter, que l'erreur se soit produite ou non (comment tenir des registres)? Pour ca, nous avons le finalement clause en Python. Il s'exécutera toujours, que le programme obtienne ou non l'une des exceptions.

Nous verrons comment nous pouvons utiliser les finalement clause pour écrire les enregistrements plus loin dans cet article.

À présent, dans l'exemple ci-dessus, Je veux imprimer la valeur de une Oui B après chaque course, que l'erreur se soit produite ou non. Voyons comment faire ça:

Cas d'utilisation réel de la gestion des exceptions en Python

Jusqu'à maintenant, nous avons vu la gestion des exceptions sur certaines données aléatoires. Que diriez-vous de lever un peu le levier et de comprendre cela à l'aide d'un exemple concret?

Nous avons des données contenant les détails des employés, comme ton éducation, âge, nombre de formations réalisées, etc. Les données sont réparties dans plusieurs répertoires par région. Les détails des employés appartenant à la même région sont stockés dans le même fichier.

À présent, notre tâche est de lire tous les fichiers et de les concaténer pour former un seul fichier. Commençons par importer certaines des bibliothèques nécessaires.

Obtenir la structure du répertoire

Pour afficher la structure du répertoire, nous utiliserons le globe bibliothèque et lire les fichiers CSV, nous utiliserons le Pandas Une bibliothèque:

Affichez la structure du répertoire à l'aide de la glob.glob fonction et chemin du répertoire de destination. Vous pouvez télécharger la structure du répertoire ici.

capture d

Nous pouvons voir que les noms des dossiers sont représentés par des nombres et à l'étape suivante, nous parcourrons chacun des répertoires et nous verrons les fichiers présents:

capture d

Dans chacun des dossiers, il y a un fichier CSV présent qui contient les détails des employés de cette région particulière. Vous pouvez ouvrir et afficher n'importe quel fichier CSV. Vous trouverez ci-dessous l'image de l'apparence des données dans le région_1.csv Record. Contient les coordonnées des employés appartenant à la région 1:

capture d

Lire les fichiers

À présent, nous savons qu'il y a un modèle dans la structure du répertoire et le nom du fichier. Dans le carnet d'adresses Nord, il y a un nom de fichier CSV region_n présent. Alors maintenant, nous allons essayer de lire tous ces fichiers en utilisant une boucle.

Nous savons que le nombre maximum est 34, nous allons donc utiliser un en boucle pour itérer et lire les fichiers dans l'ordre:

capture d

capture d

Vous pouvez voir que le fichier région_7 n'est pas présent. Ensuite, l'un des moyens les plus simples de résoudre ce problème est de mettre un et état dans le programme – si le nom du répertoire est 7 puis sautez la lecture de ce fichier.

Mais, Et si nous devions lire des milliers de fichiers ensemble? Ce serait une tâche fastidieuse de mettre à jour la condition if chaque fois que nous obtenons une erreur.

Ici, nous utiliserons l'instruction try and except pour gérer les erreurs. S'il y a des exceptions pendant l'exécution lors de la lecture d'un fichier, nous allons simplement sauter cette étape et continuer à lire le dossier suivant. Nous imprimerons le nom du fichier avec “Fichier introuvable!” si l'erreur est ErreurFichierNotFound et imprimez le nom du fichier avec “Autre erreur!” si une autre erreur se produit.

capture d

répertoire-7117961

Nous pouvons voir que nous avons une autre erreur dans le numéro de dossier 32. Essayons de lire ce fichier séparément:

capture d

Il y a quelques problèmes avec le format de fichier 32. Si vous ouvrez le fichier region_32.csv, vous verrez qu'il y a des commentaires ajoutés en haut du fichier et nous pouvons lire ce fichier en utilisant le sauts paramètre:

capture d

Voyons comment gérer cela.

Essayez les déclarations, Sauf y Autre

Nous allons créer deux variables booléennes: erreur d'analyse, fichier introuvable – et initialiser les deux à False au début de chaque itération. Ensuite, si on obtient ErreurFichierNotFound, alors nous établirons fichier introuvable comme vrai.

Alors, nous imprimerons ce fichier particulier comme manquant et sauterons cette itération. Si nous réussissons Erreur d'analyse, alors nous établirons erreur d'analyse comme True et imprimez que le fichier particulier est dans le mauvais format et relisez le fichier en utilisant le sauts paramètre.

À présent, si aucune exception ne se produit, le code de l'instruction else sera exécuté. Dans l'instruction else, nous allons ajouter le bloc de données à la liste des blocs de données:

Énoncé de test, exception, un autre et enfin

Supposons que vous vouliez créer un fichier journal pour savoir quels fichiers sont corrects et lesquels contiennent des erreurs. Ceci est un cas d'utilisation de l'instruction finally. Que j'obtienne l'erreur ou non, la peine sera enfin exécutée.

Puis dans le finalement clause, nous écrirons dans le fichier concernant l'état du fichier à chaque itération:

Remarques finales

J'utilise la gestion des exceptions lors de l'extraction de données de plusieurs pages Web. J'aimerais savoir comment vous utilisez la gestion des exceptions, alors commentez ci-dessous avec vos pensées et partagez-les avec la communauté.

Si vous avez trouvé cet article informatif, Partagez-le avec vos amis et commentez ci-dessous vos questions et commentaires. J'ai répertorié ci-dessous quelques articles étonnants liés à Python et à la science des données pour votre référence:

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.