4. Unterrichtsblock
Kursinhalte
Dateiverarbeitung
Die Dateiverwaltung ist ein wichtiger Bestandteil jeder Webanwendung. Python hat mehrere Funktionen zum Erstellen, Lesen, Aktualisieren und Löschen von Dateien.
Die Schlüsselfunktion für die Arbeit mit Dateien in Python ist die Funktion open()
. Die Funktion open()
nimmt zwei Parameter entgegen; Dateiname und Modus. Es gibt vier verschiedene Methoden (Modi) zum Öffnen einer Datei:
"r"
– read – Standardwert. Öffnet eine Datei zum Lesen, Fehler wenn die Datei nicht existiert"a"
– append – Öffnet eine Datei zum Erweitern, erstellt die Datei, wenn sie nicht existiert"w"
– schreiben – Öffnet eine Datei zum Beschreiben, erstellt die Datei, wenn sie nicht existiert"x"
– create – Erstellt die angegebene Datei, gibt einen Fehler zurück, wenn die Datei bereits existiert
Zusätzlich kann man angeben, ob die Datei im Binär- oder Textmodus verarbeitet werden soll.
"t"
– Text – Standardwert. Textmodus auf die Sprache: Deutsch"b"
– Binär – Binärmodus (z.B. Bilder)
Syntax
Um eine Datei zum Lesen zu öffnen, reicht es aus, den Namen der Datei anzugeben:
d = open("demodatei.txt")
# Der obenstehende Code entspricht:
d = open("demodatei.txt", "rt")
Hinweis:
- Da
"r"
für Lesen und"t"
für Text die Standardwerte sind, müssen wir diese nicht angeben.- Stelle sicher, dass die Datei existiert, sonst wirst Du einen Fehler erhalten.
Dateien öffnen
Nehmen wir an, wir haben die folgende Datei, die sich im selben Ordner wie Python befindet:
demodatei.txt
Wenn`s vorne zwickt und hinten beißt,
hilft Klosterfrau-Melissengeist!
Um die Datei zu öffnen, verwenden Sie wir integrierte Funktion open()
. Die Funktion open()
gibt ein Dateiobjekt zurück, welches eine read()
Methode besitzt, um den Inhalt der Datei zu lesen.
d = open("demodatei.txt", "r")
print(d.read())
Wenn sich die Datei an einem anderen Ort befindet, müssen wir den Dateipfad angeben, so wie hier. Beispielhaftes Öffnen einer Datei in einem anderen Verzeichnis:
d = open("D:\\meinedateien\servus.txt", "r")
print(d.read())
- Erstelle eine Datei mit dem Namen loremipsum.txt und packe 100 Wörter Lorem-Ipsum Text hinein.
- Öffne die Datei und lasse Dir den Inhalt ausgeben
Aufgabe
Nur Teile einer Datei auslesen
Standardmäßig gibt die Methode read()
den gesamten Text zurück, aber wir können auch festlegen, wie viele Zeichen wir zurückgeben möchten. Gibt die ersten 5 Zeichen der Datei zurück:
d = open("demdatei.txt", "r")
print(d.read(5))
Zeilen lesen
Wir können eine Zeile zurückgeben, indem wir die Methode readline()
verwenden. Lese eine Zeile der Datei:
d = open("demodatei.txt", "r")
print(d.readline())
Indem wir readline()
zweimal aufrufen, können wir die ersten beiden Zeilen lesen. Folgendes Beispiel liest die ersten zwei Zeilen der Datei:
d = open("demodatei.txt", "r")
print(d.readline())
print(d.readline())
Indem wir durch die Zeilen der Datei iterieren, können wir die gesamte Datei Zeile für Zeile lesen. Folgendes Beispiel Durchläuft die Datei Zeile für Zeile:
d = open("demodatei.txt", "r")
for x in d:
print(x)
- Schreibe ein Programm, das durch die Datei iteriert und die beiden Zeilen:
- Menschen necken, Tiere quälen,
- Äpfel, Birnen, Zwetschen stehlen
- ausgibt, wenn man in einer Eingabe fragt „Was geht am Wochenende?“
Aufgabe
Erstelle eine Datei mit dem Namen maxundmoritz.txt und speichere folgenden Text darin ab:
Ach was muß man oft von bösen
Kindern hören oder lesen!
Wie zum Beispiel hier von diesen,
Welche Max und Moritz hießen.
Die, anstatt durch weise Lehren
Sich zum Guten zu bekehren,
Oftmals noch darüber lachten
Und sich heimlich lustig machten.
Ja, zur Übeltätigkeit,
Ja, dazu ist man bereit!
Menschen necken, Tiere quälen,
Äpfel, Birnen, Zwetschen stehlen
Das ist freilich angenehmer
Und dazu auch viel bequemer,
Als in Kirche oder Schule
Festzusitzen auf dem Stuhle.
Aber wehe, wehe, wehe,
Wenn ich auf das Ende sehe!!
Ach, das war ein schlimmes Ding,
Wie es Max und Moritz ging.
Drum ist hier, was sie getrieben,
Abgemalt und aufgeschrieben.
Dateien schließen
Es ist eine gute Angewohnheit, die Datei immer zu schließen, wenn wir mit der Bearbeitung fertig sind. Folgendes Beispiel schließt die Datei, wenn wir damit fertig sind:
d = open("demodatei.txt", "r")
print(d.readline())
d.close()
Hinweis: Man sollte die Dateien immer schließen. In einigen Fällen können aufgrund von Caching die Änderungen an einer Datei erst sichtbar werden, wenn wir die Datei wieder geschlossen haben.
Aufgabe
Schließe die Dateien, die Du in den oberen Aufgaben geöffnet hast.
Dateien beschreiben & erstellen
In eine bestehende Datei schreiben
Um in eine vorhandene Datei zu schreiben, müssen wir der open()
Funktion einen Parameter hinzufügen.
"a"
– append – wird neue Inhalte am Ende der Datei anhängen"w"
– write – wird jeglichen bestehenden Inhalt überschreiben
Folgendes Beispiel öffnet die Datei „demodatei2.txt“ und fügt Inhalt zur Datei hinzu.
d = open("demodatei2.txt", "a")
d.write("Dieses war der erte Streich, doch der zweite folgt sogleich.")
d.close()
# Öffnet und liest die Datei nach der Erweiterung des Textes:
d = open("demodatei2.txt", "r")
print(d.read())
Öffnen Sie die Datei „demofile3.txt“ und überschreiben Sie den Inhalt.
d = open("demodatei3.txt", "w")
d.write("Oh-Oh! Ich habe den Inhalt gelöscht!")
d.close()
# Öffnet und liest die Datei nach dem Überschreiben:
d = open("demodatei3.txt", "r")
print(d.read())
Hinweis: die „w“ Methode wird die gesamte Datei überschreiben.
Neue Datei erstellen
Um eine neue Datei in Python zu erstellen, verwenden wir die Methode open()
mit einem der folgenden Parameter:
"x"
– create – erstellt eine Datei und gibt einen Fehler zurück, wenn die Datei bereits existiert
"a"
– append – erstellt eine Datei, wenn die angegebene Datei nicht existiert
"w"
– write – erstellt eine Datei, wenn die angegebene Datei nicht existiert
Erstellt eine Datei namens „meinedatei.txt“.
d = open("meinedatei.txt", "x")
# Ergebnis: Eine neue leere Datei wurde erstellt.
Erstellt eine neue Datei, wenn sie nicht existiert.
d = open("meinedatei.txt", "w")
Dateien löschen
Um eine Datei zu löschen, müssen Sie das OS-Modul importieren und seine os.remove()
Funktion ausführen:
Entferne die Datei „demofile.txt“:
import os
os.remove("demodatei.txt")
Überprüfung, ob die Datei existiert:
Um einen Fehler zu vermeiden, sollten wir überprüfen, ob die Datei existiert, bevor wir versuchen, sie zu löschen.
Überprüfen Sie, ob die Datei existiert, dann löschen Sie sie:
import os
if os.path.exists("demodatei.txt"):
os.remove("demodatei.txt")
else:
print("Die Datei existiert nicht")
Ordner löschen
Um einen gesamten Ordner zu löschen, verwenden wir die Methode os.rmdir()
. Folgendes Beispiel entfernt den Ordner „meinverzeichnis“:
import os
os.rmdir("meinverzeichnis")
Hinweis: Man kann nur leere Ordner entfernen.
Aufgabe
Erstelle einen Ordner mit drei Textdateien und schreibe dann ein Programm, welches:
- Den Nutzer fragt, ob der Ordner gelöscht werden soll und
- bei der Nutzereingabe „Ja“ das Löschen des Ordners ausführt.
Hinweis: Denke daran, vorher auch alle enthaltenen Dateien zu löschen.