Beim Arbeiten mit Dateipfaden in Python bietet das Modul pathlib eine großartige Möglichkeit, Dateipfade auf objektorientierte Weise zu handhaben. Dies ist eine Verbesserung gegenüber der Verwendung von Zeichenkettenmanipulation für Dateipfade, die fehleranfällig und weniger lesbar sein kann:
from pathlib import Path
p = Path('.') # '.' repräsentiert das aktuelle Verzeichnis
print(p, type(p)) # <class 'pathlib.PosixPath'> oder <class 'pathlib.WindowsPath'>, abhängig von deinem Betriebssystem
Du kannst Pfade mit dem /-Operator verknüpfen. Um beispielsweise eine Datei example.txt im aktuellen Verzeichnis darzustellen, kannst du Folgendes tun:
file_path = p / 'example.txt' # konstruiert einen neuen Pfad
print(file_path) # example.txt
Der /-Operator funktioniert unabhängig vom zugrunde liegenden Betriebssystem und verwendet den korrekten Pfadtrenner. Beachte, dass der /-Operator tatsächlich die magische Methode __truediv__() in der Path-Klasse ist, was die Arbeit mit Path-Objekten sehr intuitiv macht.
Um aus einem Path-Objekt einen absoluten Pfad zu erhalten, kannst du die Methode absolute() verwenden:
abs_path = file_path.absolute() # erhält den absoluten Pfad
print(abs_path) # gibt den absoluten Pfad aus, z.B. /home/user/example.txt auf Unix oder C:\\user\\example.txt auf Windows
Die Path-Klasse bietet viele nützliche Methoden für gängige Operationen:
Path.cwd(): gibt das aktuelle Arbeitsverzeichnis als neues Path-Objekt zurück
Path.home(): gibt das Home-Verzeichnis als neues Path-Objekt zurück
Path.exists(): prüft, ob der Pfad existiert
Path.is_file(): prüft, ob der Pfad eine Datei ist
Path.is_dir(): prüft, ob der Pfad ein Verzeichnis ist
Path.mkdir(): erstellt ein neues Verzeichnis an dem angegebenen Pfad
Path.glob(): liefert einen Generator, der alle passenden Dateien im Verzeichnis zurückgibt
Schauen wir uns an, wie einige dieser Methoden verwendet werden:
print(Path.cwd()) # gibt das aktuelle Arbeitsverzeichnis aus
print(Path.home()) # gibt das Home-Verzeichnis aus
if not file_path.exists(): # prüft, ob eine Datei existiert
print(f'Die Datei {file_path} existiert nicht.')
if file_path.is_file(): # prüft, ob es eine Datei ist
print(f'{file_path} ist eine Datei.')
new_dir = p / 'new_dir'
new_dir.mkdir(exist_ok=True) # erstellt ein neues Verzeichnis, tut nichts, wenn es bereits existiert
for file in p.glob('*.txt'): # iteriert über alle .txt-Dateien im aktuellen Verzeichnis
print(file)
Denke daran, p durch dein Path-Objekt und 'example.txt' durch deinen Dateinamen zu ersetzen, wo es angebracht ist. Das Modul pathlib ist ein leistungsstarkes Werkzeug für die Datei- und Verzeichnismanipulation in Python.
Herausforderung: Relativ zu Absolut
Mit dem Aufkommen digitaler Archive ist die Verwaltung einer enormen Anzahl von Dokumenten viel einfacher geworden. Dennoch kann das Handling von Pfaden zu diesen Dokumenten manchmal etwas knifflig sein, besonders wenn es um relative und absolute Pfade geht. Du arbeitest als Softwareentwickler bei einem digitalen Archivunternehmen. Deine Aufgabe ist es, ein Programm zu entwickeln, das relative Pfade in absolute Pfade umwandeln kann, um eine ordnungsgemäße Dokumentenverfolgung und -zugänglichkeit zu gewährleisten.
Gegeben ist ein relativer Pfad, dein Programm soll den entsprechenden absoluten Pfad ausgeben.
Die einzige Zeile der Eingabe enthält einen einzelnen relativen Pfad.
Die Ausgabe deines Programms sollte der absolute Pfad sein, der dem eingegebenen relativen Pfad entspricht.