Dateien einlesen und verarbeiten
Wir können zum Beispiel aus einer .txt-Datei Inhalte einlesen, verarbeiten und in der gleichen oder einer anderen Datei wieder ausgeben.
(Prinzipiell sind Python Dateiendungen eigentlich komplett egal. Es ist also unerheblich, ob die Datei mit .txt oder was Anderem endet – Python macht immer dasselbe. …nur: bei einer .txt steht halt im Gegensatz zu z.B. docx auch wirklich nur Text drin.)
MERKE
Um auf eine Datei zuzugreifen (lesend oder schreibend) wird die Funktion open verwendet:datei = open(dateiname_als_string, modus)
Dabei ist modus ein String, der angibt, ob gelesen oder geschrieben werden soll. Mögliche Werte dafür sind:
- "r" (read) nur lesen
- "w" (write) nur schreiben (überschreibt alles was bisher in der Datei steht)
- "a" (append) nur anhängen (schreibt am Ende der bisherigen Inhalte der Datei weiter)
- "r+" Lesen und schreiben
Der Standard ist übrigens r. Es hat als open("bla.txt") dieselbe Wirkung wie open("bla.txt", "r").
MERKE
Alles wird Standardmäßig als String eingelesen!
Eine eingelesene Datei (also die entsprechende Variable) kann wie eine Liste von Zeilen behandelt werden.
Füge dem Code links eine Anweisung hinzu, sodass der Inhalt jeder einzelnen Zeile am Bildschirm ausgegeben wird.
MERKE
Sobald eine Datei nicht mehr benötigt wird, sollte sie mitdatei.close()
wieder geschlossen werden. …alles andere wäre unsauber.
Schreiben
Schreiben funktioniert ganz ähnlich wie Lesen: Zum Öffnen benutzt man in der Funktion open dann eben (je nach Verwendungszweck) einen der Modi "w", "a" oder "r+". Das eigentliche Schreiben übernimmt die Funktion write des Dateiobjektes:
datei.write("blabla")
datei = open("datei1.txt", "a")
datei.write("FooBar")
Aufgabe 1
Lege folgende Liste von Zahlen an: [2, 5, 3, 10, 20, 32, 10]
. Schreibe diese Zahlen mit einer for-Schleife in eine Datei namens daten1.txt.
Aufgabe 2
Lies die nun erstellte Datei daten1.txt ein und gib ihre Zeilen einzeln (jeweils in einer Zeile) auf der Konsole aus.
Lesen und Ausführen
Aufgabe 3
Dein Programm soll die nun oben erstellte Datei daten1.txt lesen und jede gelesene Zahl jeweils verdoppeln.
Die nun verdoppelten Zahlen sollen nun wieder in eine Datei namens daten2.txt zurückgeschrieben werden.
Der String "\n" repräsentiert einen Zeilenumbruch.
MERKE
Wenn du nach dem Schreiben eines Wertes in die nächste Zeile springen willst, füge einfach \n am Ende des Strings ein, den du schreiben möchtest.
Notenprogramm
Aufgabe 4
- Lese eine Liste von Noten aus der Datei daten4_ein.txt ein. Jede Zeile enthält eine Note.
- Wandle die Noten um in eine Liste von Zahlen.
- Rechne den Durchschnitt aus.
- Schreib den Durchschnittswert in die Datei daten4_aus.txt.
Du kannst die Noten hier herunterladen: daten4_ein.txt
Kopiere die Noten auf der Seite, die dir angezeigt wird, wenn du auf den Link klickst und erstelle die genannte Datei in dem selben Verzeichnis wie dein Skript/Programm und füge dort die Noten ein.
Zusatzaufgabe (Pro)
Aufgabe 5
Benutze für diese Aufgabe dein (hoffentlich) schon erstelltes Text-Adventure. Deine Aufgabe ist es den Spielverlauf, also alle Orte die besucht wurden, nach jeder Runde in einer Datei spielverlauf.txt abzuspeichern.
Zusatzaufgabe (Pro+)
Aufgabe 6
Jetzt kommt die Königsdisziplin! Versuche nun dein Text-Adventure nochmal so zu erweitern, dass du den gespeicherten Spielverlauf wieder laden kannst, damit der Spieler nach schließen des Programms den alten Spielstand wieder laden kann.