EMZETT.
Login

Create Files (Dateien erstellen)

Kurz: Das programmatische Anlegen einer neuen, leeren Datei im Dateisystem — die Grundoperation, bevor überhaupt etwas in eine Datei geschrieben werden kann.

Genauer: Beim Erstellen muss ein Programm typischerweise entscheiden, was passieren soll, wenn eine Datei mit demselben Namen bereits existiert (überschreiben, Fehler werfen oder anhängen) — dieses Verhalten wird meist über einen Modus-Parameter gesteuert. Fehlende Schreibrechte im Zielverzeichnis sind eine häufige Fehlerquelle beim Erstellen von Dateien.

Im Detail

Die meisten Sprachen kennen für das Öffnen/Erstellen einer Datei mehrere Modi, die genau festlegen, wie mit einer bereits existierenden Datei gleichen Namens umgegangen wird:

"w" (write)   - Datei anlegen, existierenden Inhalt komplett überschreiben
"x" (exclusive) - nur anlegen, wenn sie noch NICHT existiert -> Fehler bei Kollision
"a" (append)  - anlegen falls nötig, sonst an bestehenden Inhalt anhängen

Der "x"-Modus (exklusives Erstellen) ist besonders wichtig, wenn eine versehentliche Überschreibung fatale Folgen hätte — z. B. beim Anlegen einer Konfigurationsdatei, die nicht aus Versehen eine bereits vorhandene, vom Nutzer angepasste Version überschreiben soll.

try:
    with open("neue_datei.txt", "x") as f:
        f.write("Erster Inhalt")
except FileExistsError:
    print("Datei existiert bereits - wird NICHT überschrieben")

Neben dem Namenskonflikt gibt es weitere typische Fehlerquellen beim Erstellen:

  • Fehlende Berechtigungen im Zielverzeichnis (das Betriebssystem erlaubt dem Programm nicht, dort Dateien anzulegen).
  • Nicht existierendes Zielverzeichnis — anders als man erwarten könnte, legen die meisten Dateisystem-Funktionen fehlende übergeordnete Ordner NICHT automatisch mit an, das muss meist explizit vorher passieren.
  • Ungültige Dateinamen — reservierte Namen oder verbotene Zeichen unterscheiden sich je nach Betriebssystem (Windows verbietet z. B. :, *, ? in Dateinamen und reserviert bestimmte Namen wie CON oder AUX komplett, unabhängig von der Dateiendung).

Nach dem Anlegen ist eine Datei zunächst leer — das eigentliche Befüllen mit Inhalt passiert im nächsten Schritt über Write Files.

Siehe auch: Files, Write Files