Python Obtenir Tous les Fichiers d’un Répertoire : Guide Complet & Efficace
Updated on
Lister les fichiers d’un répertoire est l’une des tâches les plus courantes en Python — que vous organisiez des données, prétraitiez des fichiers ou automatisiez des workflows.
Dans ce guide mis à jour, vous allez voir :
- Comment lister les fichiers avec
os.listdir - Comment lister les fichiers de façon récursive avec
os.walk - Comment filtrer les fichiers par extension
- Comment lister des images, des vidéos ou des types de fichiers spécifiques
- La façon moderne : faire tout cela avec pathlib, l’approche recommandée aujourd’hui
- Comment utiliser efficacement les motifs
glob
TL;DR — Recettes Rapides
| Tâche | Meilleure méthode |
|---|---|
| Lister les fichiers (non récursif) | os.listdir ou pathlib.Path.iterdir() |
| Lister récursivement | os.walk ou pathlib.Path.rglob() |
| Filtrer par extension | pathlib.Path.rglob("*.csv") |
| Correspondance par motif | glob.glob() / pathlib.Path.rglob("*pattern*") |
| Meilleur choix global | pathlib |
1. Utiliser os.listdir (Basique, Non Récursif)
La fonction os.listdir renvoie les noms de fichiers et de dossiers à l’intérieur d’un répertoire — mais ne descend pas dans les sous-dossiers.
import os
def list_files(directory):
return os.listdir(directory)
print(list_files("/path/to/your/directory"))Cela vous donne toutes les entrées du répertoire, mais vous ne pourrez pas filtrer ni parcourir récursivement sans logique supplémentaire. Pour la plupart du code Python moderne, privilégiez pathlib (sections suivantes), mais ceci reste pratique pour des scripts rapides.
2. Lister Récursivement Tous les Fichiers avec os.walk
Pour parcourir tous les sous-répertoires et lister tous les fichiers :
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 est puissant et économe en mémoire, ce qui le rend adapté aux arborescences de répertoires volumineuses.
3. Filtrer les Fichiers par Extension
Vous pouvez filtrer pendant le parcours :
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")Utilisez (".jpg", ".png") pour plusieurs extensions.
4. Lister les Fichiers Image ou Vidéo
Lister les images :
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")Lister les vidéos :
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")⭐ NOUVEAU : La Méthode Moderne — Utiliser pathlib (Recommandé)
Depuis Python 3.4+, pathlib est la façon privilégiée de travailler avec les chemins.
C’est plus lisible et plus puissant que os.path.
Lister tous les fichiers (non récursif) :
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"))Lister tous les fichiers récursivement :
from pathlib import Path
def list_files_recursive(directory):
return list(Path(directory).rglob("*"))
print(list_files_recursive("/path/to/dir"))Filtrer par extension :
from pathlib import Path
for file in Path("/path/to/dir").rglob("*.json"):
print(file)Filtrer plusieurs types :
from pathlib import Path
extensions = ("*.jpg", "*.png", "*.jpeg")
for ext in extensions:
for file in Path("path/to/dir").rglob(ext):
print(file)pathlib rend tout cela extrêmement clair et concis.
5. Correspondance par Motif avec glob
glob est parfait lorsque vous avez besoin de motifs de type shell (wildcards) :
import glob
json_files = glob.glob("/path/to/your/directory/**/*.json", recursive=True)
print(json_files)Motifs utiles :
"*.csv""data_*""**/*.jpg"(récursif)
Conclusion
Dans ce guide, vous avez vu plusieurs façons de lister des fichiers en Python :
os.listdirpour des scans simples de répertoireos.walkpour un parcours récursif- Le filtrage de fichiers par extension
- La gestion de types de fichiers spécifiques comme les images et les vidéos
globpour la recherche par wildcard- pathlib — l’approche moderne et recommandée
Que vous nettoyiez des données, construisiez des scripts d’automatisation de fichiers ou travailliez sur des workflows de machine learning, ces techniques vous aideront à écrire du code Python plus clair, plus rapide et plus maintenable.
FAQs
Comment lister tous les fichiers d’un répertoire en Python ?
Utilisez :
os.listdir(path)ou l’option moderne :
Path(path).iterdir()Comment lister tous les fichiers de manière récursive ?
Utilisez :
os.walk(path)ou :
Path(path).rglob("*")Comment filtrer les fichiers par extension ?
Utilisez :
file.endswith(".json")ou :
Path(path).rglob("*.json")