Skip to content

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.listdir auflistest
  • Wie du Dateien rekursiv mit os.walk auflistest
  • 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

AufgabeBeste Methode
Dateien auflisten (nicht rekursiv)os.listdir oder pathlib.Path.iterdir()
Dateien rekursiv auflistenos.walk oder pathlib.Path.rglob()
Nach Endung filternpathlib.Path.rglob("*.csv")
Pattern Matchingglob.glob() / pathlib.Path.rglob("*pattern*")
Insgesamt beste Wahlpathlib

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.listdir für einfache Verzeichnis-Scans
  • os.walk für rekursives Traversieren
  • Filtern von Dateien nach Dateiendung
  • Umgang mit speziellen Dateitypen wie Bildern und Videos
  • glob fü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")