Python Alle Dateien in einem Verzeichnis auslesen: Der vollständige & effiziente Guide
Updated on
Dateien in einem Verzeichnis aufzulisten gehört zu den häufigsten Aufgaben in Python – egal ob du Daten organisierst, Dateien vorverarbeitest oder Workflows automatisierst.
In diesem aktualisierten Guide lernst du:
- Wie du Dateien mit
os.listdirauflistest - Wie du Dateien rekursiv mit
os.walkauflistest - Wie du Dateien nach Dateiendung filterst
- Wie du Bilder, Videos oder bestimmte Dateitypen auflistest
- Der moderne Weg: all das mit pathlib, dem heute empfohlenen Ansatz
- Wie du
glob-Patterns effektiv einsetzt
TL;DR — Schnelle Rezepte
| Aufgabe | Beste Methode |
|---|---|
| Dateien auflisten (nicht rekursiv) | os.listdir oder pathlib.Path.iterdir() |
| Dateien rekursiv auflisten | os.walk oder pathlib.Path.rglob() |
| Nach Endung filtern | pathlib.Path.rglob("*.csv") |
| Pattern Matching | glob.glob() / pathlib.Path.rglob("*pattern*") |
| Insgesamt beste Wahl | pathlib |
1. os.listdir verwenden (einfach, nicht rekursiv)
Die Funktion os.listdir gibt Datei- und Ordnernamen innerhalb eines Verzeichnisses zurück – geht aber nicht in Unterordner hinein.
import os
def list_files(directory):
return os.listdir(directory)
print(list_files("/path/to/your/directory"))Damit erhältst du alle Einträge im Verzeichnis, aber ohne zusätzliche Logik kannst du weder filtern noch rekursiv durchlaufen. Für moderne Python-Projekte solltest du pathlib in Betracht ziehen (nächste Abschnitte), aber für schnelle Skripte ist dies weiterhin nützlich.
2. Alle Dateien rekursiv mit os.walk auflisten
Um durch alle Unterverzeichnisse zu laufen und alle Dateien auszugeben:
import os
def list_files_recursively(directory):
for root, dirs, files in os.walk(directory):
for file in files:
print(os.path.join(root, file))
list_files_recursively("/path/to/your/directory"))os.walk ist leistungsfähig und speichereffizient und eignet sich daher gut für große Verzeichnisbäume.
3. Dateien nach Endung filtern
Du kannst bereits beim Durchlauf filtern:
import os
def list_files_by_extension(directory, extension):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(extension):
print(os.path.join(root, file))
list_files_by_extension("/path/to/your/directory", ".json")Verwende (".jpg", ".png") für mehrere Endungen.
4. Bild- oder Videodateien auflisten
Bilder auflisten:
import os
def list_image_files(directory):
image_ext = (".jpg", ".jpeg", ".png", ".gif", ".webp")
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith(image_ext):
print(os.path.join(root, file))
list_image_files("/path/to/your/directory")Videos auflisten:
import os
def list_video_files(directory):
video_ext = (".mp4", ".avi", ".mov", ".mkv")
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith(video_ext):
print(os.path.join(root, file))
list_video_files("/path/to/your/directory")⭐ NEU: Der moderne Weg — pathlib verwenden (Empfehlung)
Seit Python 3.4 ist pathlib der bevorzugte Weg, um mit Pfaden zu arbeiten.
Es ist lesbarer und mächtiger als os.path.
Alle Dateien auflisten (nicht rekursiv):
from pathlib import Path
def list_files(directory):
return [p for p in Path(directory).iterdir() if p.is_file()]
print(list_files("/path/to/dir"))Alle Dateien rekursiv auflisten:
from pathlib import Path
def list_files_recursive(directory):
return list(Path(directory).rglob("*"))
print(list_files_recursive("/path/to/dir"))Nach Endung filtern:
from pathlib import Path
for file in Path("/path/to/dir").rglob("*.json"):
print(file)Mehrere Typen filtern:
from pathlib import Path
extensions = ("*.jpg", "*.png", "*.jpeg")
for ext in extensions:
for file in Path("path/to/dir").rglob(ext):
print(file)Mit pathlib bleibt der Code extrem übersichtlich.
5. Pattern Matching mit glob
glob ist ideal, wenn du Shell-ähnliche Wildcards verwenden möchtest:
import glob
json_files = glob.glob("/path/to/your/directory/**/*.json", recursive=True)
print(json_files)Nützliche Patterns:
"*.csv""data_*""**/*.jpg"(rekursiv)
Fazit
In diesem Guide hast du mehrere Möglichkeiten kennengelernt, Dateien in Python aufzulisten:
os.listdirfür einfache Verzeichnis-Scansos.walkfür rekursives Traversieren- Filtern von Dateien nach Dateiendung
- Umgang mit speziellen Dateitypen wie Bildern und Videos
globfür Wildcard-Suchen- pathlib – der moderne, empfohlene Ansatz
Ob du Daten bereinigst, Skripte zur Dateiautomatisierung baust oder in Machine-Learning-Workflows arbeitest – diese Techniken helfen dir, saubereren, schnelleren und besser wartbaren Python-Code zu schreiben.
FAQs
Wie liste ich alle Dateien in einem Verzeichnis mit Python auf?
Verwende:
os.listdir(path)oder die moderne Option:
Path(path).iterdir()Wie liste ich alle Dateien rekursiv auf?
Verwende:
os.walk(path)oder:
Path(path).rglob("*")Wie filtere ich Dateien nach Endung?
Verwende:
file.endswith(".json")oder:
Path(path).rglob("*.json")