Daten aus einer Datei lesen
In diesem Schritt lernen wir, wie man Daten aus der book.txt
-Datei liest, die wir im vorherigen Schritt erstellt haben. Beim Lesen von Dateien haben wir drei Hauptmethoden: read()
, readline()
und readlines()
. Lassen Sie uns jede davon untersuchen.
Erstellen Sie zunächst eine neue Python-Datei namens file_read.py
im Verzeichnis ~/project
.
touch ~/project/file_read.py
Die read()
-Methode
Die Methode read(size)
hat einen optionalen Parameter size
. Wenn size
weggelassen wird oder negativ ist, liest und gibt sie den gesamten Inhalt der Datei zurück. Wenn size
eine positive Ganzzahl ist, liest und gibt sie size
Zeichen (im Textmodus) oder size
Bytes (im Binärmodus) zurück.
Öffnen Sie file_read.py
im WebIDE-Editor und fügen Sie den folgenden Code hinzu, um den gesamten Inhalt von book.txt
zu lesen:
## Open the file in read mode ('r' is default)
f = open("book.txt")
## Read the entire content
content = f.read()
print(content)
## Close the file
f.close()
Speichern Sie die Datei und führen Sie sie im Terminal aus:
python ~/project/file_read.py
Die Ausgabe sollte der gesamte Inhalt von book.txt
sein:
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.
Das Lesen einer Datei beginnt am Anfang. Sobald Sie bis zum Ende der Datei gelesen haben, geben nachfolgende Aufrufe von read()
einen leeren String ''
zurück.
Lassen Sie uns file_read.py
ändern, um das Lesen einer bestimmten Anzahl von Zeichen zu demonstrieren. Ändern Sie den Inhalt zu:
## Open the file
f = open("book.txt")
## Read the first 13 characters
first_part = f.read(13)
print(first_part)
## Read the rest of the content
rest_of_content = f.read()
print(rest_of_content)
## Close the file
f.close()
Speichern Sie die Datei und führen Sie sie aus:
python ~/project/file_read.py
Die Ausgabe zeigt die ersten 13 Zeichen gefolgt vom restlichen Inhalt:
Bed before br
ight moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.
Dies zeigt, wie read(size)
funktioniert und wie nachfolgende Lesevorgänge dort fortfahren, wo der vorherige Lesevorgang aufgehört hat.
Die readline()
-Methode
Während read()
nach Zeichen oder Bytes liest, liest die Methode readline()
eine Datei Zeile für Zeile.
Lassen Sie uns file_read.py
ändern, um readline()
zu verwenden. Ändern Sie den Inhalt zu:
## Open the file
f = open("book.txt")
## Read the first line
line1 = f.readline()
print(line1)
## Read the second line
line2 = f.readline()
print(line2)
## Close the file
f.close()
Speichern Sie die Datei und führen Sie sie aus:
python ~/project/file_read.py
Die Ausgabe sind die ersten beiden Zeilen von book.txt
:
Bed before bright moonlight,
Suspected to be frost on the ground.
Beachten Sie die zusätzliche Leerzeile in der Ausgabe. Das liegt daran, dass jede von readline()
gelesene Zeile das Zeilenumbruchzeichen (\n
) am Ende enthält, und print()
fügt standardmäßig ebenfalls einen Zeilenumbruch hinzu.
Ähnlich wie bei read()
gibt ein Aufruf von readline()
nach Erreichen des Dateiendes einen leeren String ''
zurück.
Die readlines()
-Methode
Die Methode readlines()
liest alle Zeilen einer Datei und gibt sie als Liste von Strings zurück, wobei jeder String eine Zeile aus der Datei ist (einschließlich des Zeilenumbruchzeichens).
Lassen Sie uns file_read.py
ein letztes Mal ändern, um readlines()
zu verwenden. Ändern Sie den Inhalt zu:
## Open the file
f = open("book.txt")
## Read all lines into a list
all_lines = f.readlines()
print(all_lines)
## Close the file
f.close()
Speichern Sie die Datei und führen Sie sie aus:
python ~/project/file_read.py
Die Ausgabe ist eine Liste, die alle Zeilen aus book.txt
enthält:
['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.']
Denken Sie daran, wie wichtig es ist, die Datei zu schließen, nachdem Sie fertig sind, von ihr zu lesen. Genau wie beim Schreiben ist die Verwendung der with
-Anweisung auch für das Lesen der empfohlene Ansatz, da sie das Schließen der Datei automatisch handhabt.
So würden Sie die gesamte Datei mit with
lesen:
with open("book.txt", "r") as f:
content = f.read()
print(content)
Und Zeile für Zeile mit with
lesen:
with open("book.txt", "r") as f:
for line in f:
print(line, end='') ## Verwenden Sie end='', um zusätzliche Zeilenumbrüche zu vermeiden
Und alle Zeilen mit with
in eine Liste lesen:
with open("book.txt", "r") as f:
all_lines = f.readlines()
print(all_lines)
Üben Sie die Verwendung dieser verschiedenen Methoden, um sich mit dem Lesen von Daten aus Dateien in Python vertraut zu machen.