Lektion 9: Dateizugriffe und Fehlerbehandlung

  • Dateizugriff über eingebaute Functions
  • Textdateien lesen und schreiben
  • Binäre Dateien lesen und schreiben
  • Zugriff auf das Dateisystem
  • Verzeichnisse durchsuchen
  • Fehler == Ausnahme
  • Fehlerbehandlung

Dateizugriffe über eingebaute Functions

  • Daten werden in Dateien auf einem Speichermedium abgelegt
  • Die Grundlage ist ein Dateisystem (NTFS oder ext4)
  • Bei Python geschieht der Dateizugriff über Functions
  • Beispiele: fopen(),fread(),fwrite()

Dateien müssen geöffnet (und geschlossen) werden

  • Jede Datei muss per fopen()-Function geöffnet werden
  • Beim Öffnen werden Dateiname und optionale Angaben übergeben (u.a. Zugriffsmodus und Zeichensatz)
  • fopen() gibt ein Dateihandle zurück, über das alle weiteren Zugriffe durchgeführt werden
  • Am Ende wird eine Datei mit fopen() über das Dateihandle wieder geschlossen

Textdateien lesen und schreiben

  • Schritt 1: Öffnen mit fopen()
  • Schritt 2: Einlesen der Textzeilen, z.B. über readline()
  • Über write() wird eine Zeichenkette oder eine Zahl geschrieben

Binäre Dateien lesen und schreiben

  • Binärdatei = Datei, deren Inhalt binär, z.B. als int oder float, interpretiert wird
  • Es gibt bei Python keine direkte Unterstützung für binäres Schreiben und Lesen
  • In der Praxis werden binäre Daten byteweise gespeichert und eingelesen
  • Die Notwendigkeit Daten binär in eine Datei schreiben zu müssen, ist heutzutage fast nicht mehr vorhanden
  • In der Regel sind Textformate (vor allem JSON) die bessere Alternative

Zugriff auf das Dateisystem

  • Im Mittelpunkt steht die Function listdir() aus dem Modul os
  • listdir() "holt" Verzeichnisse und Dateien
  • Metadaten wie die Größe oder der Zeitpunkt des letzten Zugriffs müssen über Methoden von os.path abgefragt werden, z.B. getsize() für die Größe in Bytes

Verzeichnisse durchsuchen

  • Eine klassische Anforderung in nahezu jeder Programmiersprache
  • Als Alternative zu listdir() gibt es die walk()-Function aus dem os-Modul
  • Sie durchläuft alle Verzeichnisse und deren Unterverzeichnisse und gibt für jeden Eintrag ein 3er-Tupel bestehen aus Verzeichnispfad, die Namen der Unterverzeichnisse und die Namen der Dateien jeweils als Liste zurück

Fehler == Ausnahme

  • Ausnahme (engl. exception) = Fehler, der während der Ausführung eines Programms auftritt
  • Eine Ausnahme ist nicht gleich einem Programmierfehler
  • Die Ursachen liegen in der Regel außerhalb des Programms
  • Das klassische Beispiel: Für einen Dateizugriff fehlt eine Zugriffsberechtigung oder die Datei gibt es einfach nicht

Fehlerbehandlung

  • Eine Fehlerbehandlung ist optional
  • Immer dann sinnvoll, wenn einem Fehler das Programm nicht einfach eine Standardfehlermeldung anzeigen oder gar abbrechen soll
  • Die Befehle sind try und except
  • Auf try folgen der oder die Befehle, die eine Ausnahme auslösen können
  • Tritt im try-Block eine Ausnahme auf, wird die Ausführung des Befehlsblock abgebrochen und mit dem auf except folgenden Befehlsblock fortgesetzt

Zusammenfassung

  • Daten werden nach wie vor in Dateien abgelegt
  • Textdateien werden über die Functions fopen(), readline() oder write() gelesen und geschrieben
  • Zuerst wird eine Datei mit fopen() geöffnet
  • readline() und write() sind Methoden des zurückgegebenen Dateihandles
  • Über fopen() wird die Datei wieder geschlossen
  • Für die Ausnahmebehandlung gibt es die Befehle try und except

Einstieg in Python - Lektion 9

By Peter Monadjemi

Einstieg in Python - Lektion 9

Dateizugriffe und Fehlerbehandlung

  • 47