Grundlagen der Dateisystem-Operationen in Python
Die Arbeit mit dem Dateisystem gehört zu den häufigsten Aufgaben in der Python-Entwicklung. Dazu gehören das Erstellen und Löschen von Dateien, das Kopieren, Verschieben und Umbenennen sowie das Anlegen von Verzeichnissen und die Prüfung, ob diese bereits existieren. Dateioperationen bilden die Grundlage für die Automatisierung von Prozessen, Webentwicklung, Datenanalyse, Konfigurationsmanagement und das Deployment von Anwendungen.
Python bietet eine umfangreiche Sammlung integrierter Bibliotheken für die effiziente Arbeit mit dem Dateisystem. Die wichtigsten Werkzeuge sind die Module os, shutil und pathlib. Diese Bibliotheken decken nahezu alle denkbaren Anwendungsfälle ab – von einfachen Grundoperationen bis hin zu fortgeschrittenen Aufgaben.
Dateien verschieben in Python
Die Funktion shutil.move() verwenden
Wenn du eine Datei von einem Verzeichnis in ein anderes verschieben möchtest, ist die Funktion shutil.move() die einfachste und effektivste Methode. Sie funktioniert ähnlich wie der Befehl mv unter Linux und Unix.
import shutil
shutil.move('quelle/datei.txt', 'ziel/datei.txt')
Die Funktion shutil.move() verarbeitet sowohl einzelne Dateien als auch ganze Verzeichnisse. Beim Verschieben kann die Datei gleichzeitig umbenannt werden. Wichtig zu wissen: Wenn im Zielordner bereits eine Datei mit demselben Namen existiert, wird diese ohne Vorwarnung überschrieben.
Verzeichnisse beim Verschieben anlegen
Beim Verschieben von Dateien müssen oft neue Verzeichnisse erstellt werden. Der folgende Ansatz löst dieses Problem:
import os
import shutil
src = 'daten/bericht.txt'
dst_dir = 'archiv'
os.makedirs(dst_dir, exist_ok=True)
shutil.move(src, os.path.join(dst_dir, 'bericht.txt'))
Die Funktion os.makedirs() mit dem Parameter exist_ok=True erstellt eine Kette von Verzeichnissen, falls diese nicht vorhanden sind, und löst keinen Fehler aus, wenn die Verzeichnisse bereits existieren.
Verzeichnisse verschieben
Die Funktion shutil.move() unterstützt auch das Verschieben ganzer Verzeichnisse:
shutil.move('alter_ordner', 'neuer_ort/alter_ordner')
Dateien kopieren und Links erstellen
Einfaches Kopieren von Dateien
Zum Kopieren von Dateien stellt Python mehrere Funktionen mit unterschiedlichem Funktionsumfang bereit:
import shutil
# Kopieren des Dateiinhalts
shutil.copy('datei.txt', 'backup/datei.txt')
Die Funktion copy() kopiert nur den Inhalt der Datei, nicht aber die Metadaten. Für eine vollständige Kopie mit allen Dateiattributen wird copy2() verwendet:
shutil.copy2('datei.txt', 'backup/datei.txt')
Verzeichnisse kopieren
Zum Kopieren ganzer Verzeichnisse mit sämtlichem Inhalt wird die Funktion copytree() verwendet:
shutil.copytree('projekt', 'projekt_backup')
Hardlinks erstellen
Ein Hardlink ist ein zusätzlicher Name für eine bestehende Datei im Dateisystem:
import os
os.link('datei.txt', 'verlinkte_datei.txt')
Ein Hardlink bedeutet, dass eine physische Datei unter mehreren verschiedenen Pfaden verfügbar ist. Änderungen am Dateiinhalt wirken sich auf alle Links aus. Die Anzahl der Hardlinks kann mit os.stat().st_nlink überprüft werden.
Verwaltung von Verzeichnissen
Verzeichnisse erstellen
Python bietet zwei grundlegende Funktionen zum Erstellen von Verzeichnissen:
import os
# Ein einzelnes Verzeichnis erstellen
os.mkdir('neuer_ordner')
# Eine verschachtelte Verzeichnisstruktur erstellen
os.makedirs('eltern/kind/enkel', exist_ok=True)
Die Funktion mkdir() erstellt nur ein einzelnes Verzeichnis und löst eine FileExistsError-Ausnahme aus, wenn das Verzeichnis bereits existiert.