· 

Datei zeilenweise einlesen in Python

1. Einführung

Wenn man z. B. ein Videospiel oder einen Vokabeltrainer programmieren möchte, liest man die Inhalte (Lebenspunkte, Items, Vokabeln, Übersetzungen, ...) aus Dateien und speichert sie in die dafür vorgesehenen Datenstrukturen der Anwendung. Die Formate reichen dabei von XML, CSV bis hin zu einfachen Textdateien. Eine häufige Anforderung besteht darin, den Inhalt einer Datei zeilenweise einzulesen und ihn dann im Programm weiterverwenden zu können.


2. Implementierung

Um in Python eine Datei zu öffnen, kann man den Befehl open verwenden. Dieser erhält als Übergabeparameter einmal den Pfad zur Datei und den Modus, in dem das diese geöffnet werden soll (bspw. "r" für den Lesemodus oder "w" für den Schreibmodus). In unserem Fall wollen wir den Inhalt der Datei lesen, d. h. wir benötigen den Lesemodus "r":

open("pfad/zur/datei.txt", "r")

Damit du die Datei nach den Einlesen der Informationen nicht explizit mit close wieder schließen musst, kannst du syntaktisch die with-Konstruktion nutzen. Du leitest den Befehl also mit dem Keyword with ein, öffnest mit der Methode open, der du den Pfad und den Modus (hier "r") übergibst, die Datei und legst fest, wie die nun geöffnete Datei im Programm weiterverwendet werden soll. Das machst du mit dem Keyword as. Als Variablennamen legen wir z. B. file fest und schließen die Instruktion mit einem Doppelpunkt.

with open("pfad/zur/datei.txt", "r") as file:

Nun kannst du (mit Tabs eingerückt) die Logik zum Lesen des Inhalts in eine Liste implementieren. Zuerst definierst du dir eine Liste mit z. B. dem Namen list.

list = []

Danach läufst du mit einer for-Schleife nacheinander durch alle Zeilen in der Liste und fügst die aktuell eingelesene Zeile zur zuvor definierten Liste hinzu. Dafür kannst du den Plus-Operator verwenden. Achte aber darauf, dass du die Zeile, die einen String darstellt, zuerst mit eckigen Klammern in eine Liste schreibst (sonst würde man versuchen, eine Liste mit einem String zu paaren, was nicht funktioniert).

for line in file:
   list += [line]

Wenn du die Zeilenumbrüche am Ende einer Zeile nicht mit in der Liste speichern möchtest, kannst du vor dem Verpacken der Zeile in eine Liste die Methode strip aufrufen.

for line in file:
   list += [line.strip()]

Am Ende der for-Schleife enthält die Liste list die einzelnen Zeilen des Files. Um zu überprüfen, ob  du richtig programmiert hast, kannst du dir die Liste mit print auf der Konsole ausgeben.

print(list)

3. Quellcode

with open("test.txt", "r") as file:
        list = []
        for line in file:
                list += [line]
                
print(list)