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