Daten aus einer Datei lesen
Nachdem wir nun book.txt erstellt und beschrieben haben, lernen wir, wie man dessen Inhalt liest. Python bietet verschiedene Methoden zum Lesen von Dateien. Wir werden die gängigsten untersuchen.
Wir arbeiten weiterhin mit dem Skript file_io.py. Sie werden Code hinzufügen, um die gerade erstellte Datei zu lesen.
Die Methode read()
Die Methode read() liest den gesamten Inhalt einer Datei und gibt ihn als einen einzigen String zurück.
Fügen Sie den folgenden Code am Ende Ihres Skripts file_io.py hinzu. Dadurch wird das Skript zuerst die Datei schreiben und sie dann erneut lesen und ihren Inhalt ausgeben.
## Der Schreibcode aus dem vorherigen Schritt sollte darüber stehen
print("\n--- Gesamte Datei mit read() lesen ---")
with open("book.txt", "r") as f:
content = f.read()
print(content)
Speichern Sie die Datei und führen Sie sie im Terminal aus:
python ~/project/file_io.py
Die Ausgabe enthält nun den Inhalt von book.txt, der auf der Konsole ausgegeben wird:
--- Reading entire file with read() ---
Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.
Über Zeilen iterieren
Eine speichereffizientere Methode zum Lesen einer Datei, insbesondere einer großen, besteht darin, sie Zeile für Zeile zu verarbeiten. Dies können Sie erreichen, indem Sie direkt in einer for-Schleife über das Datei-Objekt iterieren.
Fügen Sie nun diesen nächsten Codeblock zu file_io.py hinzu:
print("\n--- Datei Zeile für Zeile lesen ---")
with open("book.txt", "r") as f:
for line in f:
print(line, end='')
Hier verhindert end='' in der print()-Funktion, dass ein zusätzlicher Zeilenumbruch hinzugefügt wird, da jede aus der Datei gelesene line bereits mit einem Zeilenumbruchzeichen (\n) endet.
Speichern Sie und führen Sie das Skript erneut aus:
python ~/project/file_io.py
Die Ausgabe für diesen Abschnitt wird identisch mit der Ausgabe der read()-Methode sein, aber der zugrunde liegende Prozess ist anders, da jeweils nur eine Zeile gelesen wird.
Die Methode readlines()
Die Methode readlines() liest alle Zeilen aus einer Datei und gibt sie als Liste von Strings zurück.
Fügen Sie abschließend diesen letzten Codeblock zu file_io.py hinzu:
print("\n\n--- Alle Zeilen mit readlines() lesen ---")
with open("book.txt", "r") as f:
all_lines = f.readlines()
print(all_lines)
Speichern Sie und führen Sie das Skript ein letztes Mal aus:
python ~/project/file_io.py
Die Ausgabe für diesen Abschnitt ist eine Python-Liste, wobei jedes Element ein String ist, der eine Zeile aus der Datei darstellt:
--- Reading all lines with readlines() ---
['Bed before bright moonlight,\n', 'Suspected to be frost on the ground.\n', 'Head held high, gazing at the bright moon,\n', 'Head bowed low, thinking of my homeland.']
Sie haben nun die grundlegenden Methoden zum Schreiben in und Lesen aus Dateien in Python geübt.