Python: Dateinamen effizient mit os und pathlib holen

1. Einführung

Python ist in Bezug auf Dateiverarbeitung äußerst flexibel und ermöglicht es, mit einfachem Code viele Aufgaben zu automatisieren. In diesem Artikel werden einige Methoden vorgestellt, mit denen man in Python „Dateinamen abrufen“ kann. Insbesondere wird der Fokus auf die Standardbibliotheken os-Modul und pathlib-Modul gelegt. Wenn Sie diesen Artikel lesen, erwerben Sie die Fähigkeit, Dateien in einem Verzeichnis effizient zu handhaben und Skripte zu erstellen, die Dateinamen ermitteln und filtern.

2. Grundlagen zum Abrufen von Dateinamen in Python

Zunächst beginnen wir mit den grundlegenden Methoden zum Abrufen von Dateinamen in Python. Durch die Verwendung der Funktion os.path.basename() können Sie den Dateinamen aus einem angegebenen Pfad erhalten.

2.1 os.path.basename() verwenden

os.path.basename() ist eine Funktion, die nur den Dateinamen aus einem vollständigen Pfad extrahiert. Im folgenden Beispiel wird der Dateiname aus einem Dateipfad herausgezogen.
import os

file_path = "/user/home/document/file.txt"
file_name = os.path.basename(file_path)
print(file_name)  # Ergebnis: "file.txt"

2.2 os.path.dirname() zum Abrufen des Verzeichnisnamens

Analog dazu können Sie mit os.path.dirname() den Verzeichnisnamen aus einem Dateipfad erhalten. Dadurch ist es möglich, Dateinamen und Verzeichnisnamen zu trennen.
dir_name = os.path.dirname(file_path)
print(dir_name)  # Ergebnis: "/user/home/document"

3. Alle Dateinamen im Verzeichnis abrufen

Um alle Dateien und Ordner im Verzeichnis als Liste zu erhalten, ist os.listdir() praktisch. Außerdem ist os.walk() nützlich, um Dateien in Unterverzeichnissen rekursiv zu erhalten.

3.1 os.listdir() zur Dateinamen‑Ermittlung verwenden

Mit os.listdir() können Sie alle Dateien und Ordner im angegebenen Verzeichnis als Liste erhalten. Es ist ideal für einfache Verzeichnisoperationen.
import os

dir_path = "/user/home/document"
files = os.listdir(dir_path)
print(files)  # Ergebnis: ["file1.txt", "file2.txt", "subfolder"]

3.2 Dateinamen rekursiv mit os.walk() erhalten

Wenn Sie Dateien einschließlich Unterverzeichnissen rekursiv erhalten möchten, ist die Verwendung von os.walk() am effektivsten. Der folgende Code listet alle Dateien im angegebenen Verzeichnis und dessen Unterverzeichnissen auf.
import os

dir_path = "/user/home/document"
for root, dirs, files in os.walk(dir_path):
    for file in files:
        print(os.path.join(root, file))

3.3 Hinzufügen von Fehlerbehandlung

Wenn das Verzeichnis nicht existiert oder keine Zugriffsrechte vorhanden sind, kann ein Fehler auftreten. Daher wird empfohlen, mit try-except eine Ausnahmebehandlung hinzuzufügen.
dir_path = "/invalid/path"
try:
    files = os.listdir(dir_path)
    print(files)
except FileNotFoundError:
    print(f"{dir_path} wurde nicht gefunden.")

4. Abrufen und Ändern von Dateierweiterungen

Beim Abrufen von Dateinamen kann es erforderlich sein, die Dateierweiterung zu bearbeiten. Durch die Verwendung von os.path.splitext() ist es möglich, die Erweiterung zu trennen oder zu ändern.

4.1 os.path.splitext() zum Abrufen der Erweiterung

os.path.splitext() ist eine Funktion, die Dateiname und Erweiterung getrennt zurückgibt.
import os

file_path = "/user/home/document/file.txt"
file_name, file_ext = os.path.splitext(file_path)
print(file_name)  # Ergebnis: "/user/home/document/file"
print(file_ext)   # Ergebnis: ".txt"

4.2 Erweiterung ändern

Um die Erweiterung zu ändern, fügt man dem mit os.path.splitext() erhaltenen Dateinamen die neue Erweiterung> hinzu.
new_file_path = file_name + ".jpg"
print(new_file_path)  # Ergebnis: "/user/home/document/file.jpg"
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Anwendung der Dateinamenabfrage mit dem pathlib-Modul

Seit Python 3.4 ist das pathlib-Modul sehr praktisch für die Arbeit mit Dateipfaden. pathlib ermöglicht die Pfadmanipulation auf objektorientierte Weise und ist dadurch intuitiver zu benutzen.

5.1 Dateinamen mit Path.iterdir() abrufen

Mit der iterdir()-Methode von pathlib.Path() können Sie die Dateinamen und Ordnernamen im angegebenen Verzeichnis abrufen.
from pathlib import Path

dir_path = Path("/user/home/document")
for item in dir_path.iterdir():
    print(item.name)

5.2 Rekursive Dateiabfrage: rglob()

Wenn Sie Dateinamen rekursiv einschließlich Unterverzeichnissen abrufen möchten, verwenden Sie die rglob()-Methode. Sie kann auch als Alternative zu os.walk() verwendet werden.
for file in dir_path.rglob("*"):
    print(file)

6. Filtern von Dateinamen

Wenn Sie nur Dateinamen erhalten möchten, die bestimmten Bedingungen entsprechen, können Sie mit dem glob-Modul oder der glob()-Methode von pathlib filtern.

6.1 Filtern nach Dateierweiterung

Um nur Dateien mit einer bestimmten Erweiterung zu erhalten, verwenden Sie das Platzhalterzeichen *.
from pathlib import Path

dir_path = Path("/user/home/document")
for file in dir_path.glob("*.txt"):
    print(file)
Dieser Code ruft nur die .txt-Dateien im angegebenen Verzeichnis ab.

7. Zusammenfassung

Es gibt viele Möglichkeiten, Dateinamen mit Python zu ermitteln, aber es ist wichtig, je nach Anwendungsfall die passende Methode zu wählen. Wenn Sie von den grundlegenden Operationen des os-Moduls bis zu den fortgeschrittenen Funktionen von pathlib alles nutzen, können Sie Dateien im Verzeichnis effizient verarbeiten. Im nächsten Beitrag werden wir Informationen zu fortgeschrittenen Dateioperationen wie Umbenennen, Verschieben und Löschen von Dateien bereitstellen.