pathlib

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.
Input
Output
./documents/report.pdf
/tmp/documents/report.pdf
folder2/file2.txt
/tmp/folder2/file2.txt
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue