Ausnahmebehandlung in Python | Testen und außer in Python

Inhalt

Einführung

Fehler sind der Albtraum der Existenz eines Programmierers. Du schreibst einen tollen Code, Sie sind bereit, es auszuführen und ein leistungsstarkes Modell für maschinelles Lernen zu erstellen, und dann puff. Python gibt einen unerwarteten Fehler aus, Schluss mit der Hoffnung auf schnelle Codeausführung.

Jeder von uns hat sich diesem Problem gestellt und ist ein besserer Programmierer daraus geworden.. Fehler und Fehler zu konfrontieren ist das, was unser langfristiges Vertrauen stärkt und uns wertvolle Lektionen auf dem Weg lehrt..

Ausnahmebehandlung-3578609

Wir haben einige Regeln beim Schreiben von Programmen in jeder Programmiersprache, wie man beim Definieren eines Variablennamens kein Leerzeichen verwendet, Doppelpunkt hinzufügen (:) nach der if-Anweisung, usw. Wenn wir uns nicht an diese Regeln halten, Wir stoßen auf Syntaxfehler und unser Programm weigert sich zu laufen, bis wir diese Fehler beseitigt haben.

Aber es gibt Zeiten, in denen das Programm syntaktisch korrekt ist und immer noch einen Fehler ausgibt, wenn wir versuchen, das Programm auszuführen. Was ist hier los? Gut, diese Fehler, die während der Ausführung abgefangen werden, werden als Ausnahmen bezeichnet. Und der Umgang mit diesen Fehlern wird als Ausnahmebehandlung bezeichnet.

Wir werden über die Ausnahmebehandlung in . sprechen Felshaken Hier!

Inhaltsverzeichnis

  1. Vorteile der Ausnahmebehandlung
  2. Häufige Ausnahmen
  3. Beweisaufnahme und Ausnahme
  4. Andere Aussage
  5. Abschließende Aussage
  6. Ausnahmebehandlung Real Life Use Case

Vorteile der Ausnahmebehandlung

Warum sollten Sie lernen, mit Ausnahmen umzugehen?? Lassen Sie mich das mit einem zweigleisigen Argument beantworten:

  1. Angenommen, Sie haben ein Skript geschrieben, um Tausende von Dateien in verschiedenen Verzeichnissen zu lesen. Jetzt, da kann ein fehler sein, wie ein Dateityp fehlt oder das falsche Format hat oder in verschiedenen Erweiterungen verfügbar ist. Dann, Es ist nicht möglich, alle Dateien zu öffnen und das Skript entsprechend zu schreiben. Die Ausnahmebehandlung ermöglicht es uns, mehrere Bedingungen zu definieren. Zum Beispiel, wenn das Format falsch ist, korrigiere es zuerst und versuche dann, die Datei zu lesen. Andererseits, Überspringen Sie das Lesen dieser Datei und erstellen Sie eine Protokolldatei, damit wir uns später damit befassen können.
  2. Zweitens, Nehmen wir an, wir ziehen Restaurantdaten von einer Website und unser Skript sucht nach dem Namen, die Restaurantbewertungen und die Adresse. Aus irgendeinem Grund, die Adresse des Restaurants fehlt auf der Website. In diesem Fall, wenn wir keine Ausnahmen behandeln, unser Skript kann mittendrin aufhören, also beim Sammeln von Daten in großen Mengen, es ist wichtig, dass wir mit Ausnahmen umgehen.

Häufige Ausnahmen

Hier ist eine Liste der häufigsten Ausnahmen, die Sie in Python finden:

  • ZeroDivisionError: Es steigt, wenn Sie versuchen, eine Zahl durch Null zu teilen
  • ImportError: Wird ausgelöst, wenn Sie versuchen, die Bibliothek zu importieren, die nicht installiert ist oder den falschen Namen angegeben hat
  • IndexError: Wird ausgelöst, wenn in einer Sequenz kein Index gefunden wird. Zum Beispiel, wenn die Länge der Liste ist 10 und Sie versuchen, auf den elften Index dieser Liste zuzugreifen, Sie erhalten diesen Fehler.
  • IndentationError: Erhöht, wenn die Einrückung nicht richtig angegeben ist
  • ValueError: Wird ausgelöst, wenn die integrierte Funktion für einen Datentyp den gültigen Argumenttyp hat, aber die Argumente haben ungültige Werte angegeben
  • Exception: Basisklasse für alle Ausnahmen. Wenn Sie sich nicht sicher sind, welche Ausnahme auftreten kann, Sie können die Basisklasse verwenden. Werde sich um alle kümmern

Sie können mehr über häufigere Ausnahmen lesen hier.

Ausnahmebehandlung in Python: Test- und Ausnahmeanweisung

Lassen Sie uns eine Funktion definieren, um zwei Zahlen zu teilen ein Ja B. Es funktioniert gut, wenn der Wert von b ungleich Null ist, aber es wird ein Fehler generiert, wenn der Wert von b null ist:

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

Wir können dies mit der behandeln Ja außer Stellungnahme. Zuerst, try-Klausel wird ausgeführt, das sind die Deklarationen zwischen den Schlüsselwörtern try und else.

Wenn keine Ausnahme auftritt, die Ausnahmeklausel wird weggelassen. Zweitens, wenn während der Ausführung der try-Klausel eine Ausnahme auftritt, der Rest der try-Anweisungen wird ignoriert:

Ausnahmebehandlung in Python: Sonst-Aussage

Und Python, Wir können ein Programm auch anweisen, bestimmte Codezeilen auszuführen, wenn keine Ausnahme auftritt, indem wir die der Rest Klausel. Jetzt, wenn im obigen Code keine Ausnahme auftritt, wir wollen drucken “Es ist kein Fehler aufgetreten !!”.

Mal sehen, wie das geht:

Ausnahmebehandlung in Python: Erklärung endlich

Jetzt, Was ist, wenn wir eine Aktion ausführen müssen, unabhängig davon, ob der Fehler aufgetreten ist oder nicht? (wie man Aufzeichnungen führt)? Dafür, Wir haben das Schließlich Klausel in Python. Es wird immer ausgeführt, egal ob das Programm eine der Ausnahmen erhält oder nicht.

Wir werden sehen, wie wir das nutzen können Schließlich Klausel, um die Aufzeichnungen später in diesem Artikel zu schreiben.

Jetzt, im Beispiel oben, Ich möchte den Wert von drucken ein Ja B nach jedem Lauf, egal ob der Fehler aufgetreten ist oder nicht. Mal sehen, wie das geht:

Real-Life-Anwendungsfall der Ausnahmebehandlung in Python

Bis jetzt, Wir haben die Ausnahmebehandlung bei einigen zufälligen Daten gesehen. Wie wäre es, wenn Sie den Hebel ein wenig anheben und dies anhand eines realen Beispiels verstehen??

Wir haben Daten mit den Angaben der Mitarbeiter, wie deine Ausbildung, Alter, Anzahl der durchgeführten Schulungen, etc. Die Daten sind in mehrere Verzeichnisse pro Region unterteilt. Angaben zu Mitarbeitern, die derselben Region angehören, werden in derselben Datei gespeichert.

Jetzt, unsere Aufgabe ist es, alle Dateien zu lesen und zu einer einzigen Datei zu verketten. Beginnen wir mit dem Importieren einiger der erforderlichen Bibliotheken.

Rufen Sie die Verzeichnisstruktur ab

So zeigen Sie die Verzeichnisstruktur an, wir werden die benutzen Globus Bibliothek und zum Lesen von CSV-Dateien, wir werden die benutzen Pandas Bücherei:

Zeigen Sie die Verzeichnisstruktur mit dem . an glob.glob Funktion und Zielverzeichnispfad. Sie können die Verzeichnisstruktur herunterladen hier.

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

Wir können sehen, dass die Namen der Ordner als Zahlen dargestellt werden, und im nächsten Schritt werden wir jedes der Verzeichnisse durchgehen und die vorhandenen Dateien sehen:

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

In jedem der Ordner, es ist eine CSV-Datei vorhanden, die die Angaben zu den Mitarbeitern dieser bestimmten Region enthält. Sie können jede CSV-Datei öffnen und anzeigen. Unten sehen Sie das Bild, wie die Daten in der region_1.csv Verfahren. Enthält Angaben zu Mitarbeitern aus der Region 1:

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

Lesen Sie die Dateien

Jetzt, Wir wissen, dass es ein Muster in der Verzeichnisstruktur und dem Dateinamen gibt. Im Adressbuch Norden, es gibt einen CSV-Dateinamen region_n gegenwärtig. Also werden wir jetzt versuchen, alle diese Dateien mit einer Schleife zu lesen.

Wir wissen, dass die maximale Anzahl 34, also verwenden wir a in Schleife um die Dateien der Reihe nach zu iterieren und zu lesen:

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

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

Sie können sehen, dass die Datei region_7 ist nicht hier. Dann, Eine der einfachsten Möglichkeiten, damit umzugehen, besteht darin, a und Zustand im Programm – wenn der Verzeichnisname . ist 7 dann überspringe das Lesen dieser Datei.

Aber, Was ist, wenn wir Tausende von Dateien zusammen lesen müssen?? Es wäre eine mühsame Aufgabe, die if-Bedingung jedes Mal zu aktualisieren, wenn wir einen Fehler erhalten.

Hier, Wir werden die try-and-except-Anweisung verwenden, um Fehler zu behandeln. Wenn es während der Laufzeit beim Lesen einer Datei Ausnahmen gibt, wir überspringen diesen Schritt einfach und lesen den nächsten Ordner weiter. Wir drucken den Dateinamen mit “Datei nicht gefunden!” wenn der fehler ist FileNotFoundError und drucke den Dateinamen mit “Anderer Fehler!” wenn ein anderer Fehler auftritt.

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

Verzeichnis-7117961

Wir können sehen, dass wir einen weiteren Fehler in der Dateinummer haben 32. Versuchen wir, diese Datei separat zu lesen:

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

Es gibt einige Probleme mit dem Dateiformat 32. Wenn Sie die Datei region_32.csv öffnen, Sie werden sehen, dass einige Kommentare über der Datei hinzugefügt wurden und wir diese Datei mit dem lesen können springt Parameter:

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

Mal sehen, wie man damit umgeht.

Versuchen Sie es mit Aussagen, Außer du sonst

Wir erstellen zwei boolesche Variablen: Analysefehler, Datei nicht gefunden – und initialisieren Sie beide zu Beginn jeder Iteration auf False. Dann, wenn wir bekommen FileNotFoundError, dann werden wir gründen Datei nicht gefunden als wahr.

Später, wir werden diese bestimmte Datei als fehlend drucken und diese Iteration überspringen. Wenn es uns gelingt Parser Fehler, dann werden wir gründen Analysefehler als True und geben Sie aus, dass die betreffende Datei das falsche Format hat und lesen Sie die Datei erneut mit dem springt Parameter.

Jetzt, wenn keine Ausnahme auftritt, der Code der else-Anweisung wird ausgeführt. In der else-Anweisung, wir werden den Datenrahmen zur Liste der Datenrahmen hinzufügen:

Testaussage, Ausnahme, ein anderer und endlich

Angenommen, Sie möchten eine Protokolldatei erstellen, um zu verfolgen, welche Dateien korrekt sind und welche Fehler aufweisen. Dies ist ein Anwendungsfall der final-Anweisung. Ob ich den Fehler bekomme oder nicht, das Urteil wird endlich vollstreckt.

Dann im Schließlich Klausel, wir werden bei jeder Iteration in die Datei bezüglich des Status der Datei schreiben:

Abschließende Anmerkungen

Ich verwende die Ausnahmebehandlung beim Extrahieren von Daten von mehreren Webseiten. Ich würde gerne wissen, wie Sie die Ausnahmebehandlung verwenden, Kommentiere also unten mit deinen Gedanken und teile sie mit der Community.

Wenn Sie diesen Artikel informativ fanden, Teilen Sie es mit Ihren Freunden und kommentieren Sie unten Ihre Fragen und Kommentare. Ich habe unten einige erstaunliche Artikel zu Python und Data Science als Referenz aufgelistet:

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.