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
Made with Slides.com