Python pathlib()

Das Modul Python pathlib() bietet eine sehr effektive Methode, um in der Programmiersprache mit Dateisystempfaden zu interagieren. Neben einer einfacheren Handhabung ist insbesondere der knappere Code ein großer Vorteil des Moduls.

Was ist Python pathlib()?

In der beliebten Programmiersprache Python gibt es unterschiedliche Methoden, um mit Dateisystempfaden zu arbeiten. Seit Version 3.4 bietet Python mit pathlib() zum Beispiel ein weiteres sehr nützliches und umfangreiches Tool, um betriebssystemunabhängig mit Pfaden bzw. Paths zu interagieren.

Insbesondere wenn Sie die Pfade nicht nur lesen oder bearbeiten, sondern auch zusätzliche Aufgaben und Arbeitsschritte durchführen möchten, ist das Modul von großem Nutzen. Es ermöglicht unter anderem auch die Erstellung und das Kopieren einzelner Dateien und ihrer Bestandteile. Vereinfacht wird dies vor allem durch die übergeordnete Oberfläche von Python pathlib(). Das Modul gehört zur Standardbibliothek und ersetzt bzw. vereint zahlreiche weitere Methoden.

Managed Nextcloud by IONOS Cloud
Teamarbeit in der eigenen Cloud
  • Vollständige Datensouveränität in deutschen Rechenzentren
  • Managed Service ohne Administrationsaufwand
  • File-Sharing, Dokumentenbearbeitung & Kommunikation

Objektorientierte Darstellung von Pfaden

Einer der großen Vorteile von Python pathlib() ist, dass das Modul es Nutzerinnen und Nutzern erlaubt, Paths nicht mehr als Strings, sondern stattdessen objektorientiert darzustellen. Während der bisherige Weg oft umständlich war und mehrere Statements selbst für einfache Aufgaben benötigte, wurde die Syntax für das neue Modul deutlich vereinfacht. Da Sie in der Regel mit der Klasse Path arbeiten werden, sollten Sie diese vor der Arbeit an einem Projekt einfach importieren. Dies ermöglicht Ihnen im weiteren Verlauf die Erstellung eines kompakteren Codes. Für den Import verwenden Sie einfach den folgenden Befehl:

from pathlib import Path
python

Um nun eine Path-Instanz zu erstellen, können Sie bereits Python pathlib() nutzen. Dafür eignet sich der folgende Code, bei dem wir die beiden Komponenten „farben“ und „blau.txt“ verwenden. Mit einem einfachen Befehl wird dann eine neue Instanz erstellt:

from pathlib import Path
blau = Path("farben", "blau.txt")
print(blau)
python

Die Ausgabe würde dann beispielhaft so aussehen:

farben/blau.txt
python

Python setzt also in der Ausgabe das Betriebssystemtrennzeichen zwischen die beiden Komponenten. Während dieses in unserem Beispiel ein rechtsgerichteter Schrägstrich / ist, kann die Ausgabe auf einem Rechner mit Windows stattdessen einen Rückstrich oder Backslash \ enthalten. Für Linux und macOS bleibt der Schrägstrich bestehen.

Verzeichnisse aufrufen mit Python pathlib()

Nachdem Sie Path importiert haben, können Sie mit Python pathlib() die unterschiedlichen Methoden der Klasse nutzen. Dazu gehört unter anderem der Zugriff auf bestimmte Verzeichnisse. Wenn Sie den folgenden Code ausführen, rufen Sie zum Beispiel Ihr aktuelles Arbeitsverzeichnis auf:

from pathlib import Path
Path.cwd()
python

Das ist unter anderem dann wichtig, wenn Sie eine Datei im selben Verzeichnis öffnen möchten, in dem auch Ihr derzeitiges Skript ausgeführt wird.

Auch ein Zugriff auf das Homeverzeichnis des aktuellen Users bzw. der aktuellen Userin ist mit Python pathlib() möglich. Es ist empfehlenswert, dieses Verzeichnis als Ausgangspunkt zu wählen, um mit den entsprechenden Pfaden im weiteren Verlauf auch auf unterschiedlichen Rechnern arbeiten zu können, falls das nötig sein sollte. Der passende Code sieht aus wie folgt:

from pathlib import Path
Path.home()
python

Zugriff mithilfe eines Strings

Statt mit Ihrem Arbeits- oder Homeverzeichnis zu beginnen, ist es auch mit Python pathlib() nach wie vor möglich, eine Datei oder ein Verzeichnis mit Hilfe eines Strings anzusteuern. Beispielhaft würde der entsprechende Code folgendermaßen aussehen:

from pathlib import Path
Path(r"C:\Users\name\ordner\datei.txt")
python

Dabei wird der String in einen Pfad umgewandelt und kann so einfacher genutzt werden. Das kleine r vor dem String weist diesen als sogenannten „raw string literal“ aus. Dies sorgt dafür, dass der Backslash tatsächlich in dieser Funktion genutzt wird. Er kann ansonsten nämlich auch als Kennzeichnung einer nicht druckbaren Variablen verwendet werden.

Pfade oder Strings verbinden

Eine weitere Methode, um mit Python pathlib() einen neuen Pfad zu erstellen, ist die Verbindung einzelner Paths oder Strings. Dafür haben Sie zwei Möglichkeiten.

Durch die Nutzung eines einzelnen Schrägstrichs verbinden Sie zwei Elemente zu einem neuen Pfad. Das könnte beispielhaft so aussehen:

from pathlib import Path
for file_path in Path.cwd().glob("*.txt"):
	neuer_pfad = Path("beispiel") / file_path.name
	file_path.rename(neuer_pfad)
python

Alternativ verwenden Sie die Methode joinpath() und erzielen das gleiche Ergebnis:

from pathlib import Path
Path.home().joinpath("beispiel", "unterordner", "datei.py")
python

Einzelne Bestandteile nutzen

Wenn Sie einen Path in seine Bestandteile zerlegen und diese nutzen möchten, bietet Ihnen Python pathlib() ebenfalls das passende Werkzeug dafür. Im folgenden Code finden Sie dafür einige Beispiele:

from pathlib import Path
path = Path(r"C:\Users\name\ordner\datei.txt")
path
path.anchor
path.name
path.parent
path.parent.parent
path.stem
path.suffix
python
  • .anchor: Berücksichtigt den Teil vor den eigentlichen Verzeichnissen; dieser kann auch je nach Betriebssystem variieren
  • .name: Berücksichtigt nur den Namen der Datei ohne einen Bezug zum Verzeichnis
  • .parent: Berücksichtigt das Verzeichnis, in dem eine Datei zu finden ist; ist der Pfad selbst ein Verzeichnis, wird das übergeordnete Verzeichnis genutzt
  • .stem: Berücksichtigt lediglich den Namen der Datei und lässt dabei die Dateiendung weg
  • .suffix: Berücksichtigt ausschließlich die Dateiendung

Die entsprechenden Ausgaben würden dann so aussehen:

'C:\\'
'datei.txt'
WindowsPath('C:/Users/name/ordner')
WindowsPath('C:/Users/name')
'datei'
'.txt'
python

Dateien auslesen oder schreiben

Zwar ist es auch möglich, Dateien mit anderen Mitteln zu schreiben oder auszulesen, mit Python pathlib() können Sie dabei allerdings den Code deutlich verknappen. Um die Funktionsweise besser zu veranschaulichen, erstellen wir eine einfache Liste, die Tiere und Pflanzen enthält. So sieht sie aus:

<!-- beispielliste.md ->
## Tiere
* Hund
* Katze
* Maus
## Pflanzen
* Rose
* Nelke
text

Nun nutzen wir die standardmäßige Funktion open() mit Python pathlib(), um sämtliche Tiere und Pflanzen aus der Liste zu filtern und auszugeben. Der entsprechende Code sieht dabei so aus:

from pathlib import Path
path = Path.cwd() / "beispielliste.md"
with path.open(mode="r", encoding="utf-8") as md_file:
	content = md_file.read()
	ausgabe = [line for line in content.splitlines() if line.startswith("*")
python

Dateinamen ändern

Um Dateinamen zu verändern, sind mit Python pathlib() ebenfalls nur wenige Zeilen Code nötig. Das Modul nutzt dafür die Methode .with_name(), mit dem Name und Dateiendung angepasst werden können. Der entsprechende Code folgt diesem Muster:

from pathlib import Path
md_path = Path("/Users/name/ordner/blau.md")
txt_path = md_path.with_name("rot.txt")
md_path.replace(txt_path)
python

Dateien mit Python pathlib() kopieren

Auch wenn Path selbst keine Methode zum Kopieren kennt, können Sie .with_stem() nutzen, um eine Datei zu duplizieren. Dabei wird ein neuer Dateiname angelegt, ohne die Dateiendung zu ändern. Dies ist ein Beispiel für den passenden Code:

from pathlib import Path
source = Path("beispielliste.md")
destination = source.with_stem("neues_beispiel")
destination.write_bytes(source.read_bytes())
python

Dateien verschieben

Wenn Sie mit Python pathlib() Dateien verschieben oder löschen möchten, sollten Sie dabei beachten, dass das System keine weiteren Nachfragen stellt. Es ist also Vorsicht geboten, damit Sie keine wichtigen Informationen verlieren. Mit .replace() verschieben Sie eine Datei. Sollte eine Datei mit demselben Namen am Zielort bereits existieren, wird diese überschrieben. Auch hier sollten Sie sich also Ihrer Entscheidung sicher sein. Es gibt allerdings die Möglichkeit, im Vorfeld zu überprüfen, ob diese Gefahr überhaupt besteht. Der Code sieht dann insgesamt so aus:

from pathlib import Path
source = Path("blau.py")
destination = Path("rot.py")
if not destination.exists():
	source.replace(destination)
python

Leere Dateien erstellen

Um Python pathlib() zur Erstellung einer leeren Datei zu nutzen, schreiben Sie diesen Code:

from pathlib import Path
filename = Path("neu.txt")
filename.exists()
filename.touch()
filename.exists()
filename.touch()
python
Tipp

Mit GitHub ans Ziel: Deploy Now von IONOS bietet Ihnen automatisierte Deployments, die Sie mit nur drei Schritten umsetzen. Nach dem Prinzip „Push, build und deploy“ führen Sie Änderungen noch schneller durch. Wir beraten Sie gerne zu unseren unterschiedlichen Tarifmodellen.

War dieser Artikel hilfreich?
Page top