Das Pathlib-Modul in Python

In diesem Tutorial werfen wir einen Blick auf das sehr nützliche Modul pathlib, das anstelle des älteren Moduls os.path genutzt werden kann. Es vereinfacht den Umgang mit Pfaden erheblich, insbesondere dann, wenn ein Programm plattformübergreifend zur Anwendung kommen soll. Für die nachfolgenden Beispiele ist es erforderlich, folgende Importanweisung hinzuzufügen:

from pathlib import Path

Beginnen wir mit zwei einfachen Beispielen. Es sollen ein Verzeichnis und eine Textdatei im aktuellen Arbeitsverzeichnis erstellt werden.

file = Path("my_file.txt")
folder = Path("my_folder")

Für das Erzeugen einer Datei wird die Methode touch(), für das Erzeugen eines Verzeichnissen wird die Methode mkdir() verwendet:

# Create a file
file.touch()

# Create a folder
folder.mkdir()

Sollte das Verzeichnis bereits existieren, führt die Ausführung von folder.mkdir() zu einem FileExistsError.

Es könnte auch ein Pfad zu einem anderen Verzeichnis an Path übergeben werden. Folgende Zeile führt dazu, dass der Ordner my_folder auf dem Schreibtisch erstellt wird, wobei dieser Code plattformübergreifend funktioniert. Auf einem Windows-System müsste man also keinen Backslash (\) verwenden. Ein Slash (/) als Trennzeichen würde funktionieren.

folder = Path("/Users/bodo/Desktop/my_folder")
folder.mkdir()

Es ist nicht nur möglich eine leere Datei zu erzeugen. Vielmehr kann mit der Methode write_text() die Datei mit Inhalt gefüllt werden. Im folgenden Beispiel wird die Datei „my_text.txt“ auf dem Schreibtisch gespeichert. Sie enthält den Satz „Dies ist irgendein Text.“.

file = Path("/Users/bodo/Desktop/my_text.txt")
file.write_text("Dies ist irgendein Text.")

Auf diese Weise könnte man zum Beispiel auch ein Python-Skript erstellen. Folgender Code speichert eine Python-Datei im Dokumente-Verzeichnis. Es handelt sich um ein Skript, das „Hello, World!“ in der Konsole ausgibt.

file = Path("/Users/bodo/Documents/hello.py")
file.write_text("print('Hello, World!')")

Der Text kann sich auch über mehrere Zeilen erstrecken. Im nächsten Beispiel wird ein Python-Skript erzeugt, das über die Elemente einer Liste iteriert:

file = Path("/Users/bodo/Desktop/my_script.py")

template = """
persons = ["Liza", "Kendra", "Tom"]
for i in persons:
    print(i)
"""

file.write_text(template)

Selbstverständlich kann der Inhalt einer Datei auch gelesen werden. Dafür wird read_text() verwendet:

content = file.read_text()
print(content)

Zum Schluß möchte ich noch zeigen, wie man sich die Bestandteile des Pfads zur Datei „my_script.py“ anzeigen lassen kann:

print(file.parent)  # /Users/bodo/Desktop
print(file.name)  # my_script.py
print(file.suffix)  # .py