Start mit pathlib — Objektorientierte Pfadbearbeitung
Wenn man mit Python arbeitet, ist es sehr häufig, sich mit Dateipfaden oder Verzeichnissen zu beschäftigen. Ob beim Speichern von Logs, Lesen und Schreiben von Konfigurationsdateien oder Organisieren von Datendateien – all das sind alltägliche Aufgaben. Früher musste man hierfür Module wie os.path
, glob
oder shutil
durcheinander verwenden, aber das ist jetzt nicht mehr nötig. Warum?
Weil es pathlib
gibt.
Was ist pathlib?
pathlib
ist ein objektorientiertes Modul zur Pfadbearbeitung, das seit Python 3.4 verfügbar ist. Während man zuvor Dateipfade einfach als Strings behandelt hat, betrachtet pathlib
"den Pfad selbst" als ein Objekt. Dadurch wird das Verbinden von Pfaden, das Überprüfen ihrer Existenz und das Lesen und Schreiben von Dateien viel klarer und lesbarer.
from pathlib import Path
▶ Diese Path
-Klasse funktioniert automatisch je nach Betriebssystem als PosixPath
(macOS/Linux) oder WindowsPath
. Das bedeutet, dass Sie sich keine Gedanken über das verwendete Betriebssystem machen müssen!
Wichtige Funktionen von pathlib mit Beispielen
1. Erzeugen eines Pfad-Objekts
p = Path('data/example.txt')
print(p.resolve()) # Gibt den absoluten Pfad zurück
Es sieht aus wie ein String, ist aber ein Objekt. Sie können den Pfad flexibel durch verschiedene Methoden und Eigenschaften bearbeiten.
2. Pfadkombination: Nutzung des /
-Operators
data_dir = Path('data')
file_path = data_dir / 'sample.txt'
Es ist sehr pythonisch, dass man Pfade mit dem Slash-Operator /
verbinden kann. Das erhöht die Lesbarkeit und Zuverlässigkeit gegenüber der String-Verkettung.
3. Extrahieren von Pfadinformationen
Es ist sehr praktisch, dass man Pfadkomponenten wie das übergeordnete Verzeichnis, den Namen und die Erweiterung trennen kann.
p = Path('data/sample.txt')
print(p.parent) # data
print(p.name) # sample.txt
print(p.stem) # sample
print(p.suffix) # .txt
4. Überprüfen der Existenz
Gibt das Ergebnis als Boolean zurück.
p.exists() # Existiert?
p.is_file() # Ist es eine Datei?
p.is_dir() # Ist es ein Verzeichnis?
5. Erstellen von Verzeichnissen
p = Path('logs/2025/05')
p.mkdir(parents=True, exist_ok=True)
Es ist möglich, verschachtelte Verzeichnisse auf einmal zu erstellen, und es wird kein Fehler ausgelöst, wenn sie bereits existieren.
6. Lesen und Schreiben von Dateien
p = Path('output.txt')
p.write_text("Hello, World!")
text = p.read_text()
print(text)
Sie können auch mit Binärdateien arbeiten:
p.write_bytes(b'binary data')
data = p.read_bytes()
7. Dateisystem durchsuchen
print(list(Path('.').glob('*.py'))) # Liste der .py-Dateien im aktuellen Ordner
print(list(Path('.').rglob('*.py'))) # Rekursive Suche in Unterverzeichnissen
glob()
gibt einen Generator zurück, daher ist es ratsam, ihn in eine Liste zu verwandeln, um die Ergebnisse zu überprüfen.
8. Dateien löschen, verschieben, umbenennen
p.unlink() # Löschen
p.rename('newname') # Umbenennen (innerhalb desselben Verzeichnisses)
p.replace('newpath') # Verschieben und überschreiben
rename()
kann fehlschlagen, wenn der Zielpfad existiert, daher sollten Siereplace()
verwenden, wenn Sie überschreiben möchten. Für Kopierarbeiten sollten Sieshutil.copy()
verwenden.
Vergleich: os.path vs pathlib
# os.path
import os
os.path.exists('foo/bar.txt')
# pathlib
Path('foo/bar.txt').exists()
- Der Code ist viel lesbarer und verständlicher.
- Besonders in Linux-Umgebungen ähnelt es der Syntax von häufig verwendeten Befehlen wie
cd
,ls
,mkdir
, was es vertraut macht.
Warum sollte man pathlib verwenden?
- Der Code wird strukturell durch die Verwendung von Path-Objekten anstelle von Strings.
- Betriebssystemunabhängige Pfadbearbeitung (Windows vs POSIX)
- Integration der Funktionen von
os.path
,glob
,shutil
- Verbesserte Wartbarkeit auch bei Testcode, Logging und Fehlerbehandlung
Abschließend
So wie Counter
und defaultdict
die Arbeit mit Sammlungen eleganter gemacht haben, wird pathlib
die Art und Weise, wie wir mit Dateipfaden umgehen, völlig verändern. Die alten Zeiten, in denen wir uns mit Stringverarbeitung herumschlagen mussten, können wir nun vergessen. Probieren Sie die in diesem Artikel gezeigten Beispiele selbst aus. Sie werden viel schneller damit vertraut werden, als Sie denken.
Im nächsten Teil planen wir, die fortgeschrittene Verwendung von shutil
zu behandeln, um tatsächliches Kopieren/Backup von Dateien zu automatisieren. Bleiben Sie gespannt!
Wenn Sie neugierig auf den vorherigen Artikel sind, klicken Sie bitte auf den untenstehenden Link, um ihn zu sehen.
Es sind keine Kommentare vorhanden.