Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung des grundlegenden Python-Lernens (8)

Zusammenfassung des grundlegenden Python-Lernens (8)

PHP中文网
PHP中文网Original
2017-07-14 18:13:141514Durchsuche

10. Dateien und Ausnahmen

Lernen Sie, Dateien zu verarbeiten, lassen Sie das Programm große Datenmengen schnell analysieren, lernen Sie, mit Fehlern umzugehen und zu vermeiden, dass das Programm bei Unfällen abstürzt. Ausnahmen lernen. Ausnahmen sind spezielle Objekte, die von Python erstellt werden. Sie werden verwendet, um Fehler zu verwalten, die bei der Ausführung eines Programms auftreten, und um die Anwendbarkeit, Benutzerfreundlichkeit und Stabilität des Programms zu verbessern.

Lernmodul JSON, JSON kann zum Speichern von Benutzerdaten verwendet werden, um Verluste zu vermeiden, wenn das Programm unerwartet nicht mehr ausgeführt wird.

Das Erlernen des Verarbeitens von Dateien und des Speicherns von Daten kann die Verwendung des Programms erleichtern. Sie können auswählen, welche Art von Daten sie eingeben möchten und wann sie diese eingeben möchten. Sie können das Programm auch schließen, nachdem Sie das Programm zum Verarbeiten verwendet haben Das nächste Mal.

Lernen Sie, mit Ausnahmen umzugehen, mit Situationen umzugehen, in denen Dateien nicht vorhanden sind, und mit verschiedenen Problemen umzugehen, die das Programm zum Absturz bringen können, wodurch das Programm robuster gegenüber verschiedenen Fehlern wird, unabhängig davon, ob diese fehlerhaften Daten von unbeabsichtigten Fehlern stammen oder vor böswilligen Versuchen, ein Programm zu beschädigen.

10.1 Daten aus Dateien lesen

Um eine Datei zu lesen, können Sie die gesamte Datei auf einmal lesen oder die Datei Zeile für Zeile lesen. Wählen Sie je nach Dateigröße Ihre eigene Lesemethode.

10.1.1 Gesamte Datei lesen

In Python gibt es drei Schritte zum Lesen und Schreiben von Dateien:

 1. Rufen Sie die Funktion open() auf und geben Sie ein File-Objekt zurück.

 2. Rufen Sie die Methode read() oder write() des File-Objekts auf.

 3. Rufen Sie die Methode close() des File-Objekts auf, um die Datei zu schließen.

Verwenden Sie die Funktion open(), um die Datei zu öffnen

 mit open(file name) as file_object:

                content = file_object.read() # Die Schließmethode muss nicht aufgerufen werden, da die Datei automatisch geschlossen wird.

Findet die zu öffnende Datei im aktuellen Verzeichnis der Datei.

Die Methode read() liest den Dateiinhalt

 Die read()-Methode des Dateiobjekts:

>>> helloContent = helloFile.read()

>>> helloContent

'Hello world!'

>>> helloContent = helloFile.read() >>> helloContent 'Hallo Welt!'

Sie können die Methode readlines() verwenden, um eine Liste von Zeichenfolgen aus der Datei abzurufen. Jede Zeichenfolge in der Liste entspricht jeder Textzeile.

10.1.2 Dateipfad

Beachten Sie die Schrägstriche, Backslashes unter Windows und Schrägstriche unter OS X und Linux.

 mit open('text_filesfilename.txt') als file_object.

Es gibt zwei Möglichkeiten, einen Dateipfad anzugeben.

  • „Absoluter Pfad“ beginnt immer im Stammordner.
  • „Relativer Pfad“, der relativ zum aktuellen Arbeitsverzeichnis des Programms ist.

Absoluter Dateipfad

Gewinnen:

file_path = 'C:Usersehmatthesother_filestext_filesfilename.txt’

 mit open(file_path) als file_object:

Linux und Betriebssystem:

file_path = '/home/ehmatthes/other_files/text_files/filename.txt'

 mit open(file_path) als file_object:

Es gibt auch Punkt- (.) und Punkt- (..) Ordner. Dabei handelt es sich nicht um echte Ordner, sondern um spezielle Namen, die in Pfaden verwendet werden können. Ein einzelner Punkt („Punkt“) ist bei Verwendung als Ordnername die Abkürzung für „dieses Verzeichnis“. Die beiden Punkte („Punkte“) bedeuten den übergeordneten Ordner.

 Umgang mit absoluten und relativen Pfaden

 1.os.path-Modul bietet einige Funktionen, die den absoluten Pfad eines relativen Pfads zurückgeben und prüfen, ob der angegebene Pfad ein absoluter Pfad ist.

 2. Der Aufruf von os.path.abspath(path) gibt die Zeichenfolge des absoluten Pfads des Parameters zurück. Dies ist eine einfache Möglichkeit, einen relativen Pfad in einen absoluten Pfad umzuwandeln.

 3. Rufen Sie os.path.isabs(path) auf. Wenn der Parameter ein absoluter Pfad ist, wird True zurückgegeben. Wenn der Parameter ein relativer Pfad ist, wird False zurückgegeben.

 4. Der Aufruf von os.path.relpath(path, start) gibt die Zeichenfolge des relativen Pfads vom Startpfad zum Pfad zurück.

5. Wenn start nicht angegeben ist, wird das aktuelle Arbeitsverzeichnis als Startpfad verwendet.

10.1.3 Dateidaten Zeile für Zeile lesen

 für Zeile in Zeilen:

 replace() Ersetzungsfunktion

file.replace('dog', 'cat')

10.2 Dateien schreiben

10.2.1 Leere Datei schreiben

open('file', 'w') stellt zwei tatsächliche Parameter bereit: Dateiname und Operation

1. Lesemodus „r“

 2. Schreibmodus „w“

 3. Zusätzlicher Modus „a“

 4. Lese- und Schreibmodus „r+“

5. Wenn der Modusparameter weggelassen wird, öffnet Python die Datei standardmäßig nur im schreibgeschützten Modus.

6. Wenn die Datei nicht existiert, wird sie beim Öffnen automatisch generiert.

 7. Die Eingabe ist Eingabe und die Ausgabe ist Ausgabe. Daher bezeichnen wir Eingabe und Ausgabe gemeinsam als Eingabe/Ausgabe oder abgekürzt als IO.

8. Wenn Sie möchten, dass das Passwort bei der Eingabe unsichtbar bleibt, müssen Sie die getpass-Methode im getpass-Modul verwenden.

Hinweis: Wenn die Datei im Schreibmodus „w“ geöffnet wird, wird sie gelöscht, sofern sie bereits vorhanden ist.

Wenn der an open() übergebene Dateiname nicht existiert, erstellen sowohl der Schreibmodus als auch der Hinzufügungsmodus eine neue leere Datei . Rufen Sie nach dem Lesen oder Schreiben einer Datei die Methode close() auf, bevor die Datei erneut geöffnet werden kann.

Python kann nur Zeichenfolgen in Textdateien schreiben. Um numerische Daten in einer Textdatei zu speichern, müssen Sie diese mit der Funktion str in ein Zeichenfolgenformat konvertieren.

>>> baconFile = open('bacon.txt', 'w')

>>> baconFile.write('Hello world!n')

13

 >>> baconFile.close()

>>> baconFile = open('bacon.txt', 'a')

>>> baconFile.write('Bacon is not a vegetable.')

25

>>> baconFile.close()

>>> baconFile = open('bacon.txt')

>>> content = baconFile.read()

>>> baconFile.close()

>>> print(content)

 Hello world! Bacon is not a vegetable.

>>> baconFile = open('bacon.txt', 'w') >>> baconFile.write('Hallo Welt!n') 13 >>> baconFile.close() >>> baconFile = open('bacon.txt', 'a') >>> baconFile.write('Speck ist kein Gemüse.') 25 >>> baconFile.close() >>> baconFile = open('bacon.txt') >>> content = baconFile.read() >>> baconFile.close() >>> print(content) Hallo Welt! Speck ist kein Gemüse.

Zuerst öffnen wir bacon.txt im Schreibmodus. Da bacon.txt noch nicht existiert, erstellt Python eines. Rufen Sie write() für die geöffnete Datei auf und übergeben Sie den String-Parameter „Hello world! n“ an write(), schreiben Sie den String in die Datei und geben Sie die Anzahl der geschriebenen Zeichen, einschließlich Zeilenumbrüche, zurück. Schließen Sie dann die Datei.

Um Text zum vorhandenen Inhalt der Datei hinzuzufügen, öffnen wir die Datei im Anhängemodus, anstatt die gerade geschriebene Zeichenfolge zu ersetzen. Schreiben Sie „Speck ist kein Gemüse.“ in die Datei und schließen Sie sie. Um schließlich den Inhalt der Datei auf dem Bildschirm auszudrucken, öffnen wir die Datei im Standardlesemodus, rufen read() auf, speichern den resultierenden Inhalt in content, schließen die Datei und drucken den Inhalt.

Bitte beachten Sie, dass die Methode write() nicht automatisch ein Zeilenumbruchzeichen am Ende der Zeichenfolge hinzufügt, wie dies bei der Funktion print() der Fall ist. Sie müssen dieses Zeichen selbst hinzufügen.

Verwenden Sie das Shelve-Modul, um Variablen zu speichern

Mit dem Shelve-Modul können Sie Variablen in Python-Programmen in binären Shelf-Dateien speichern. Auf diese Weise kann das Programm die Daten der Variablen von der Festplatte wiederherstellen. Mit dem Shelve-Modul können Sie Ihrem Programm Funktionen zum Speichern und Öffnen hinzufügen. Wenn Sie beispielsweise ein Programm ausführen und einige Konfigurationseinstellungen eingeben, können Sie diese Einstellungen in einer Regaldatei speichern und das Programm sie bei der nächsten Ausführung laden lassen.

>>> import shelve

>>> shelfFile = shelve.open('mydata')

>>> cats = ['Zophie', 'Pooka', 'Simon']

>>> shelfFile['cats'] = cats

>>> shelfFile.close()

>>> Importregal

>>> ShelfFile = shelve.open('mydata')

>>> cats = ['Zophie', 'Pooka', 'Simon']

>>> shelfFile = shelve.open('mydata')

>>> type(shelfFile)

>>> shelfFile['cats'] ['Zophie', 'Pooka', 'Simon']

>>> shelfFile.close()

>>> ShelfFile['cats'] = Katzen

>>> shelfFile = shelve.open('mydata')

>>> list(shelfFile.keys())

['cats']

>>> list(shelfFile.values())

[['Zophie', 'Pooka', 'Simon']]

>>> shelfFile.close()

>>> ShelfFile.close()

Wenn Sie den vorherigen Code unter Windows ausführen, werden im aktuellen Arbeitsverzeichnis drei neue Dateien angezeigt: mydata.bak, mydata.dat und mydata.dir. Unter OS X wird nur eine mydata.db-Datei erstellt.

Diese Binärdateien enthalten die im Regal gespeicherten Daten. Das Format dieser Binärdateien spielt keine Rolle, Sie müssen nur wissen, was das Shelve-Modul tut, nicht wie es es tut. Mit diesem Modul müssen Sie sich nicht mehr darum kümmern, die Daten Ihres Programms in einer Datei zu speichern. Ihr Programm kann später das Shelve-Modul verwenden, um diese Dateien erneut zu öffnen und die Daten abzurufen. Regalwerte müssen nicht im Lese- oder Schreibmodus geöffnet werden, da sie nach dem Öffnen gelesen oder geschrieben werden können.

>>> ShelfFile = shelve.open('mydata')

>>> type(shelfFile)

>>> ShelfFile['cats'] ['Zophie', 'Pooka', 'Simon']

>>> import os

>>> os.makedirs('C:\delicious\walnut\waffles')

>>> ShelfFile.close()
Regalwerte verfügen wie ein Wörterbuch über die Methoden „keys()“ und „values()“, die einen listenähnlichen Wert der Schlüssel und Werte im Regal zurückgeben. Da diese Methoden eher Listenwerte als tatsächliche Listen zurückgeben, sollten sie an die Funktion list() übergeben werden, um eine Listenform zu erhalten.
>>> ShelfFile = shelve.open('mydata') >>> list(shelfFile.keys()) ['Katzen'] >>> list(shelfFile.values()) [['Zophie', 'Pooka', 'Simon']] >>> ShelfFile.close()
Nur Text ist beim Erstellen von Dateien nützlich, wenn Sie diese in einem Texteditor wie Notepad oder TextEdit lesen müssen. Wenn Sie jedoch Daten aus einem Python-Programm speichern möchten, verwenden Sie das Shelve-Modul. 10.2.2 Mehrere Zeilen schreiben Die Funktion write() bricht die Zeile nach dem geschriebenen Text nicht automatisch um, daher müssen Sie das Zeilenumbruchzeichen n selbst hinzufügen. 10.3 Betriebssystembetrieb 10.3.1 Verwenden Sie os.makedirs(), um einen neuen Ordner zu erstellen  Programme können die Funktion os.makedirs() verwenden, um neue Ordner (Verzeichnisse) zu erstellen.
>>> Betriebssystem importieren >>> os.makedirs('C:\delicious\walnut\waffles')

Dadurch wird nicht nur der Ordner „C:delicious“ erstellt, sondern auch der Ordner „walnuss“ unter C:delicious und der Ordner „waffles“ in C:deliciouswalnut. Das heißt, os.makedirs() erstellt alle notwendigen Zwischenordner, um sicherzustellen, dass vollständige Pfadnamen vorhanden sind.

10.3.2 os.path-Modul

Das Modul os.path enthält viele nützliche Funktionen im Zusammenhang mit Dateinamen und Dateipfaden.

 1. Dateigröße und Ordnerinhalt anzeigen

  • Sobald Sie mit Dateipfaden umgehen können, können Sie mit dem Sammeln von Informationen zu bestimmten Dateien und Ordnern beginnen. Das Modul os.path bietet Funktionen zum Anzeigen der Byteanzahl einer Datei sowie der Dateien und Unterordner in einem bestimmten Ordner.
  • Der Aufruf von os.path.getsize(path) gibt die Anzahl der Bytes der Datei im Pfadparameter zurück.
  • Der Aufruf von os.listdir(path) gibt eine Liste von Dateinamenzeichenfolgen zurück, die jede Datei im Pfadparameter enthalten (beachten Sie, dass sich diese Funktion im Betriebssystemmodul und nicht in os.path befindet).
  • Verwenden Sie os.path.join(), um den Ordnernamen und den aktuellen Dateinamen zu verbinden.

 2. Überprüfen Sie die Pfadgültigkeit

  • Wenn der von Ihnen angegebene Pfad nicht existiert, stürzen viele Python-Funktionen ab und melden einen Fehler. Das Modul os.path bietet Funktionen zum Erkennen, ob ein bestimmter Pfad vorhanden ist und ob es sich um eine Datei oder einen Ordner handelt.
  • Wenn die Datei oder der Ordner, auf die der Pfadparameter verweist, vorhanden ist, gibt der Aufruf von os.path.exists(path) True zurück, andernfalls wird False zurückgegeben.
  • Wenn der Pfadparameter existiert und eine Datei ist, gibt der Aufruf von os.path.isfile(path) True zurück, andernfalls wird False zurückgegeben.
  • Wenn der Pfadparameter existiert und ein Ordner ist, gibt der Aufruf von os.path.isdir(path) True zurück, andernfalls wird False zurückgegeben.

10.4 Organisationsdateien

10.4.1 Shutil-Modul

Das Shutil-Modul (oder Shell-Tool) enthält Funktionen, mit denen Sie Dateien in Python-Programmen kopieren, verschieben, umbenennen und löschen können. Um die Funktionen von Shutil nutzen zu können, müssen Sie Shutil zunächst importieren.

10.4.1.1 Dateien und Ordner kopieren

Das Shutil-Modul bietet Funktionen zum Kopieren von Dateien und ganzen Ordnern.

 1. Rufen Sie Shutil.copy(Quelle, Ziel) auf, um die Datei an der Pfadquelle in den Ordner am Pfadziel zu kopieren (Quelle und Ziel sind beide Zeichenfolgen).

 2. Wenn das Ziel ein Dateiname ist, wird dieser als neuer Name der kopierten Datei verwendet. Diese Funktion gibt eine Zeichenfolge zurück, die den Pfad der zu kopierenden Datei darstellt.

>>> import shutil, os

>>> os.chdir('C:\')

>>> shutil.copy('C:\spam.txt','C:\delicious')

'C:\delicious\spam.txt'

>>> shutil.copy('eggs.txt', 'C:\delicious\eggs2.txt')

'C:\delicious\eggs2.txt'

>>> import Shutil, OS

>>> os.chdir('C:\')

>>> Shutil.copy('C:\spam.txt','C:\delicious')

'C:\delicious\spam.txt'

>>> Shutil.copy('eggs.txt', 'C:\delicious\eggs2.txt')

'C:\delicious\eggs2.txt'

10.4.1.2 Dateien und Ordner verschieben und umbenennen

Rufen Sie Shutil.move(Source, Destination) auf, um den Ordner an der Pfadquelle zum Pfadziel zu verschieben und die Zeichenfolge des absoluten Pfads des neuen Speicherorts zurückzugeben.

Wenn das Ziel auf einen Ordner verweist, wird die Quelldatei in das Ziel verschoben und der ursprüngliche Dateiname bleibt erhalten. 10.5 Ausnahme

Python verwendet spezielle Objekte, sogenannte Ausnahmen, um Fehler zu verwalten, die bei der Ausführung des Programms auftreten.

Python erstellt eine Ausnahme, wenn ein Fehler auftritt.

Wenn es zur Behandlung von Ausnahmen geschrieben wird, wird das Programm fortgesetzt, andernfalls stoppt das Programm und gibt einen Trackback mit einem Bericht über die Ausnahme zurück.

Ausnahmen werden mit dem

Try-Exception-Codeblock

behandelt. Führen Sie den angegebenen Vorgang aus und teilen Sie Python mit, was zu tun ist. Wenn Sie den

def my_abs(x):

    if not isinstance(x, (int, float)):

        raise TypeError('bad operand type')

    if x >= 0:

        return x

    else:

        return -x

ValueError异常

 

Try-Exception-Codeblock verwenden, wird das Programm auch dann weiter ausgeführt, wenn ein Fehler auftritt, und es wird eine von Ihnen verfasste, benutzerfreundliche Fehlermeldung angezeigt, um den Benutzer darüber zu informieren, was schief gelaufen ist. 1.ZeroDivisionError-Ausnahme  Eine Ausnahme tritt auf, wenn der Divisor 0 ist. 2.TypeError Es sind nur Parameter vom Typ Ganzzahl und Gleitkomma zulässig. Die Datentypprüfung kann mit der integrierten Funktion isinstance() implementiert werden
def my_abs(x): wenn nicht isinstance(x, (int, float)):          TypeError('bad operand type') auslösen wenn x >= 0: gibt x zurück sonst: return -x Wertfehler

3. Fehler aufzeichnen

Das integrierte Protokollierungsmodul von Python kann Fehlerinformationen problemlos protokollieren.

4. Einen Fehler auslösen

Wenn Sie einen Fehler auslösen möchten, können Sie zunächst nach Bedarf eine Fehlerklasse definieren, die Vererbungsbeziehung auswählen und dann die Raise-Anweisung verwenden, um eine Fehlerinstanz auszulösen.

10.6 Daten speichern

Verwenden Sie das JSON-Modul zum Speichern von Daten. Das Format der Json-Daten ist nicht spezifisch für Python und kann mit Personen geteilt werden, die andere Programmiersprachen verwenden. Es handelt sich um ein leichtes Format, das nützlich und leicht zu erlernen ist.

Das JSON-Format (JavaScript Object Notation) wurde ursprünglich für JavaScript entwickelt, hat sich aber inzwischen zu einem gängigen Format entwickelt, das in vielen Sprachen verwendet wird.

Verwenden Sie json.dump() und json.load()

json.dump() akzeptiert zwei tatsächliche Parameter, die zu speichernden Daten und das Dateiobjekt, das zum Speichern der Daten verwendet werden kann.

  1. Ein Programm zum Speichern einer Reihe von Zahlen json.dump()
  2. Programm zum Einlesen von Zahlen in den Speicher json.load()

10.6.2 Speichern und Lesen von benutzergenerierten Daten

json.dump und json.load werden zusammen zum Speichern bzw. Laden von Daten verwendet.

10.6.3 Refactoring

1. Der Code kann korrekt ausgeführt werden, es können jedoch weitere Verbesserungen vorgenommen werden – teilen Sie den Code in eine Reihe von Funktionen auf, die bestimmte Arbeiten ausführen. Dieser Vorgang wird als Rekonstruktion bezeichnet. Durch Refactoring wird Code klarer, verständlicher und leichter erweiterbar.

 2. Packen Sie den größten Teil der Logik in eine oder mehrere Funktionen.

10.6.4 Zusammenfassung

1. Gelernt, Dateien zu lesen, die gesamte Datei und eine Zeile zu lesen, Dateien zu bedienen, zu öffnen, Lesemodus, Schreibmodus, Anhängemodus, Lese- und Schreibmodus.

 2. So verwenden Sie den Try-Except-Else-Codeblock für die Ausnahmebehandlung. Ausnahmetyp. Daten manipulieren, Daten speichern und lesen, JSON-Modul verwenden, Dump und Load verwenden, Code umgestalten lernen.

10.7 Debuggen

1. Behauptung

Überall dort, wo print() zur Unterstützung der Anzeige verwendet wird, kann stattdessen die Behauptung verwendet werden.

def foo(s):

    n = int(s)

    assert n != 0, 'n is zero!'

    return 10 / n

 

def main():

    foo('0')

def foo(s):

n = int(s)

behaupte n != 0, 'n ist Null!'

10 / n zurückgeben def main(): foo('0')
assert bedeutet, dass der Ausdruck n! = 0 wahr sein sollte, andernfalls wird der folgende Code gemäß der Logik des Programmbetriebs definitiv schief gehen. Wenn die Behauptung fehlschlägt, löst die Assertion-Anweisung selbst einen AssertionError aus.

Das obige ist der detaillierte Inhalt vonZusammenfassung des grundlegenden Python-Lernens (8). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn