4. Unterrichtsblock

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())

    Aufgabe

    • 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

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)

    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.

    • 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?“

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.