Python Tutorial
- jetzt Python programmieren lernen

Dateien auslesen und Inhalt nutzen

Dateien lesen mit Python ist ein großes Problem. Wir wollen Daten aus einer Datei laden und diese können wir dann nach Belieben weiterverarbeiten.

Die Datei selber, die wir laden in Python laden wollen, sollte sich im gleichen Verzeichnis befinden. Wir erstellen uns eine Text-Datei mit dem Inhalt "Text, der aus Datei kommt". Der Dateinamen sollte den üblichen Kriterien entsprechen. Es muss nicht einmal eine Dateiendung vergeben werden – ich mache dies rein aus Gewohnheit und nenne meine Textdatei "textdatei.txt"

Text, der aus Datei kommt

Um diese Datei nun zu laden, erstellen wir ein Python-Programm im gleichen Verzeichnis, in der sich auch unsere Text-Datei befindet.

Im ersten Schritt müssen wir die Datei zum Lesen öffnen.

open('textdatei.txt', MODUS)

Bisher passiert noch nichts, da wir die Art der Verwendung bei open im MODUS angeben müssen. Es gibt verschiedene Modi, um eine Datei zu lesen, in eine Datei zu schreiben bzw. gleichzeitiges lesen und schreiben.

Folgende Kürzel stehen für den Modus zur Verfügung:

w für "write" - nur schreiben (bestehender Inhalt wird überschrieben)
a für "append" – wird an bestehenden Inhalt angehängt
r+ für lesen und schreiben
r nur für lesen
b In Binärform für lesen und schreiben (die anderen Modi werden durch b ergänzt)

Wir wollen jetzt erst einmal unseren Inhalt aus der Datei lesen, also verwenden wir den "nur lesen"-Modus "r".

open('textdatei.txt','r')

Soweit so gut. Was liefert uns eigentlich die Funktion open zurück? Diese liefert uns einen Rückgabewert zurück, auf den wir dann verschiedene Methoden anwenden können.

datei = open('textdatei.txt','r')
print(datei)

Wir erhalten als Rückgabewert: "<_io.TextIOWrapper name='textdatei.txt' mode='r' encoding='UTF-8'>"

Jetzt können wir die zur Verfügung stehende Methoden darauf anwenden wie z.B. read.

datei = open('textdatei.txt','r')
print(datei.read())

Wir erhalten nun den Inhalt "Text, der aus Datei kommt" angezeigt.

Erweitern wir nun den Inhalt unserer Datei "textdatei.txt" um 2 weitere Zeilen:

Text, der aus Datei kommt
Ich bin die zweite Zeile
und die dritte folgt sogleich

Speichern nicht vergessen. Wenn wir nun wieder unsere Methode read darauf anwenden, sehen wir als Ergebnis den kompletten Inhalt (egal wieviel Zeilen es wären).

Immer nur 1 Zeile auslesen – readline

Wollen wir aber nur eine Zeile auslesen, um den Inhalt der Datei Zeile für Zeile zu verarbeiten, hilft die Methode readline weiter. Zum Beispiel haben wir in jeder Zeile einen Zahlenwert gespeichert und wollen diese der Reihen nach einlesen und weiterverarbeiten:

Wenn wir nun unser bestehendes Programm darauf anwenden:

datei = open('textdatei.txt','r')
print(datei.readline())

Erhalten wir nur die erste Zeile.

Um Jetzt Zeile für Zeile einzulesen, packen wir die readline() Methode in eine for-Schleife:

datei = open('textdatei.txt','r')
for zeile in datei:
	print("Inhalt aus Datei: ")
	print(zeile)

Jetzt wird Zeile für Zeile durchlaufen:

Länge des Lesens festlegen – .read(X)

Bei der Methode read() kann in der Klammer die Länge des Lesens festgelegt werden. Somit können z.B. die erste 5 Zeichen ausgelesen werden.

datei = open('textdatei.txt','r')
print(datei.read(7))

Als Ergebnis erhalten wir nun von unserem Mustertext als Rückgabe die ersten sieben Zeichen:

Text, d

Wäre das siebte Zeichen ein Zeilenumbruch, würde dieses dann als letztes Zeichen gelesen und ausgegeben. Einfach einmal probieren :).

guter Stil – beenden über .close()

Es ist eine Frage des guten Stils, dass wir für das System kundtun, dass wir die Datei "fertig genutzt" haben. Daher wird nach Lese- und Schreibvorgänge die Verbindung wieder geschlossen über die Methode close()

datei = open('textdatei.txt','r')
print(datei.read())
datei.close()