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.
- 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
pythonUm 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)
pythonDie Ausgabe würde dann beispielhaft so aussehen:
farben/blau.txt
pythonPython 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()
pythonDas 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()
pythonZugriff 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")
pythonDabei 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)
pythonAlternativ verwenden Sie die Methode joinpath()
und erzielen das gleiche Ergebnis:
from pathlib import Path
Path.home().joinpath("beispiel", "unterordner", "datei.py")
pythonEinzelne 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'
pythonDateien 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
textNun 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("*")
pythonDateinamen ä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)
pythonDateien 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())
pythonDateien 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)
pythonLeere 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()
pythonMit 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.