Titre RNCP Niveau 7

Maîtrisez pipelines, cloud & IA pour devenir Data Engineer opérationnel.

Devenez Data Engineer

DataScientist.fr

Formations

L'équipeLa plateforme
Offre entreprises

🇫🇷

Lister tous les fichiers d'un répertoire - Tutoriel pratique en Python
Python

Lister tous les fichiers d'un répertoire - Tutoriel pratique en Python

Romain DE LA SOUCHÈRE

Lead Developer, Expert Cloud et DevOps

Publié le 2 janvier 2025 · 8 min de lecture

Dans le monde complexe de la gestion des fichiers et des dossiers, il est essentiel de maîtriser les outils permettant d'explorer efficacement les répertoires. Que vous soyez développeur ou simple utilisateur, comprendre comment obtenir une liste exhaustive et ciblée des contenus de vos répertoires peut transformer votre façon de travailler. Plongeons dans les techniques et astuces qui vous aideront à naviguer avec aisance dans vos systèmes de fichiers, en utilisant notamment les puissants motifs glob de Python.

Obtenir une liste de tous les fichiers et dossiers dans un répertoire

Pour obtenir une liste de tous les fichiers et dossiers dans un répertoire en utilisant Python, nous allons nous concentrer sur l'utilisation du module intégré os et d'autres méthodes alternatives. Voici un guide détaillé pour explorer différentes approches.

Utilisation du module os

Le module os est l'une des méthodes les plus courantes pour interagir avec le système de fichiers en Python. Voici comment vous pouvez l'utiliser pour lister les fichiers et dossiers :
python
Ce simple script vous donnera tous les fichiers et dossiers présents dans le répertoire spécifié. Cependant, os.listdir() ne distingue pas entre fichiers et dossiers.

Différencier fichiers et dossiers

Pour différencier entre fichiers et dossiers, vous pouvez utiliser os.path :
python
Ici, nous utilisons os.path.join() pour construire le chemin complet de chaque élément, puis os.path.isfile() et os.path.isdir() pour vérifier s'il s'agit d'un fichier ou d'un dossier.

Utilisation de os.walk

Pour parcourir récursivement un répertoire et ses sous-répertoires, os.walk est très utile :
python
os.walk() génère les noms de fichiers dans l'arborescence des répertoires, en haut vers le bas. Pour chaque répertoire, il retourne un tuple contenant le chemin du répertoire, une liste des sous-répertoires, et une liste des fichiers.

Utilisation de pathlib

Depuis Python 3.4, le module pathlib offre une approche orientée objet pour manipuler les chemins de fichiers :
python
pathlib permet une syntaxe plus lisible et intuitive, et iterdir() renvoie un itérateur sur les éléments du répertoire.
Ces méthodes vous permettront de lister efficacement les fichiers et dossiers dans un répertoire en utilisant Python, vous offrant la flexibilité de choisir la méthode qui s'adapte le mieux à vos besoins.

Listage récursif avec .rglob()

Pour effectuer un listage récursif de fichiers dans un répertoire et ses sous-répertoires, la méthode .rglob() du module pathlib est particulièrement efficace. Cette méthode permet de rechercher des fichiers en utilisant des motifs globaux, semblables à ceux utilisés dans les systèmes Unix.

Introduction à .rglob()

La méthode .rglob() est une fonction pratique pour parcourir un répertoire de manière récursive et lister tous les fichiers qui correspondent à un motif spécifique. Le motif peut être aussi simple que '*' pour inclure tous les fichiers, ou plus complexe pour cibler des types de fichiers particuliers, comme *.txt pour les fichiers texte.

Utilisation de .rglob()

Voici un exemple d'utilisation de .rglob() pour lister tous les fichiers dans un répertoire donné :
python
Dans ce script, chemin.rglob('*') parcourt le répertoire et tous les sous-répertoires, listant chaque fichier et dossier. Si vous souhaitez lister uniquement des fichiers spécifiques, vous pouvez ajuster le motif. Par exemple, pour lister uniquement les fichiers Python :
python

Avantages de .rglob()

L'un des principaux avantages de .rglob() est sa simplicité et sa puissance pour effectuer des recherches globales et récursives. Contrairement à os.walk(), qui nécessite de gérer manuellement les fichiers et les dossiers, .rglob() offre une syntaxe concise et intuitive.

Exemple pratique

Supposons que vous souhaitez lister tous les fichiers texte et les fichiers Python dans un répertoire. Vous pouvez combiner plusieurs appels à .rglob() :
python
Cette méthode vous permet de filtrer facilement les fichiers par type et de gérer les résultats de manière organisée, rendant .rglob() un outil essentiel pour la gestion de fichiers en Python.

Utilisation d'un motif glob python pour un listage conditionnel

L'utilisation de motifs globaux en Python est une méthode puissante pour filtrer les fichiers dans un répertoire en fonction de conditions spécifiques. Cela est particulièrement utile lorsque vous avez besoin de manipuler uniquement certains types de fichiers ou de suivre une structure de nommage particulière.

Comprendre les motifs globaux

Les motifs globaux sont basés sur des caractères génériques qui permettent de définir un schéma de recherche pour les noms de fichiers. Par exemple :
  • * représente n'importe quel nombre de caractères.
  • ? représente un seul caractère.
  • Les crochets [] permettent de désigner un ensemble de caractères possibles.
Ces outils sont intégrés dans le module glob de Python, mais aussi dans pathlib, comme nous l'avons vu avec .rglob().

Utilisation de glob pour un listage conditionnel

Pour illustrer l'utilisation de motifs globaux, prenons l'exemple de la recherche de fichiers dans un répertoire qui contiennent un certain mot-clé dans leur nom :
python
Ici, le motif rapport.* recherchera tous les fichiers dont le nom contient le mot "rapport", indépendamment de l'extension.

Listage conditionnel avec pathlib

Avec pathlib, vous pouvez aussi appliquer des motifs globaux de manière conditionnelle. Par exemple, pour lister uniquement les fichiers modifiés récemment :
python

Cas d'utilisation pratique

Les motifs globaux sont également utiles pour filtrer les fichiers par extension ou par nom complexe, ce qui est courant dans la gestion de données ou le traitement de lots de fichiers. Cela vous permet de cibler précisément les fichiers pertinents, optimisant ainsi le processus de manipulation de fichiers.
En combinant ces techniques, vous pouvez créer des scripts Python puissants et flexibles pour gérer efficacement vos fichiers selon des critères spécifiques.

Éliminer le listage des répertoires inutiles

Lors du listage de fichiers dans un répertoire, il peut être utile de filtrer et d'éliminer les répertoires inutiles qui ne contribuent pas à votre objectif. Ceci peut être réalisé en utilisant divers outils Python pour optimiser le processus.

Filtrer les répertoires avec os

Lorsque vous utilisez os.walk() ou os.listdir(), les répertoires sont listés par défaut. Pour les ignorer, vous pouvez adapter votre code afin de ne garder que les fichiers :
python
Dans cet exemple, nous utilisons une compréhension de liste pour construire une liste qui ne contient que les fichiers.

Utiliser pathlib pour exclure les répertoires

Avec pathlib, la méthode iterdir() permet également de filtrer facilement les répertoires :
python
pathlib offre une syntaxe plus intuitive et fournit une méthode directe pour vérifier si un élément est un fichier ou un dossier.

Optimisation du parcours de répertoires

Lorsque vous devez parcourir un répertoire sans inclure certains sous-répertoires, os.walk() vous donne la possibilité de modifier la liste des répertoires à parcourir :
python
En modifiant la liste dossiers, vous pouvez contrôler quels répertoires os.walk() doit ignorer. Cela permet d'optimiser le parcours des fichiers en évitant des répertoires non désirés ou non pertinents.
Ces techniques vous aideront à maintenir un processus de gestion de fichiers propre et efficace, en éliminant les répertoires qui ne sont pas nécessaires pour votre tâche spécifique.

Conclusion

En guise de synthèse, nous avons exploré diverses méthodes pour obtenir une liste de fichiers dans un répertoire à l'aide de Python, tout en filtrant les résultats en fonction de différents critères. Ces techniques vous permettent de personnaliser et d'optimiser vos recherches de fichiers, rendant vos scripts plus efficaces et adaptés à vos besoins spécifiques.

Bilan des méthodes explorées

Nous avons commencé par l'utilisation du module os, une méthode classique qui offre flexibilité et contrôle. Grâce à os.listdir() et os.walk(), vous pouvez non seulement lister les fichiers et dossiers d'un répertoire, mais aussi parcourir récursivement l'arborescence des répertoires. L'ajout de conditions pour différencier les fichiers des dossiers et exclure les répertoires inutiles permet d'affiner le processus.
Ensuite, nous avons abordé le module pathlib, qui introduit une approche orientée objet pour la manipulation des chemins de fichiers. pathlib simplifie le code et améliore la lisibilité, tout en offrant des fonctionnalités puissantes comme .rglob() pour un listage récursif basé sur des motifs globaux. Cette méthode est particulièrement utile pour cibler des types de fichiers spécifiques à travers une structure de répertoires complexe.

Application des motifs globaux

Les motifs globaux permettent de filtrer les fichiers selon des critères précis, tels que l'extension ou des mots-clés dans le nom du fichier. Cette capacité à appliquer des conditions de recherche avancées est essentielle pour traiter efficacement des volumes importants de données ou pour automatiser des tâches répétitives.

Filtrage des répertoires inutiles

Enfin, nous avons discuté des techniques pour éliminer les répertoires inutiles lors du listage des fichiers. En ajustant les listes de répertoires à parcourir, vous pouvez réduire le temps de traitement et éviter les erreurs potentielles dans vos scripts, surtout lorsque vous travaillez avec des systèmes de fichiers complexes.
En maîtrisant ces différentes approches, vous êtes mieux équipé pour gérer les fichiers de manière plus stratégique et efficace dans vos projets Python. Ces compétences sont essentielles pour tout développeur ou analyste travaillant avec des systèmes de fichiers, que ce soit pour la gestion de projets, le traitement de données ou le développement de logiciels.

Partager avec

💙 Merci d'avoir parcouru l'article jusqu'à la fin !

Romain DE LA SOUCHÈRE

Romain DE LA SOUCHÈRE - Lead Developer, Expert Cloud et DevOps

Ingénieur de formation avec plus de 11 ans d'expérience dans le développement back-end et le data engineering. Expert dans l’industrialisation des projets data dans le cloud.

» En savoir plus

Formations associés

Toutes nos formations

Préparez la certification PL‑300
Préparez la certification PL‑300
24 heures
Débutant
Garantie
Préparez la certification AZ-900
Préparez la certification AZ-900
10 heures
Débutant
Garantie
Préparez la certification DP‑700
Préparez la certification DP‑700
24 heures
Débutant
Garantie
Préparez la certification DP‑900
Préparez la certification DP‑900
10 heures
Débutant
Garantie

DataScientist.fr

By AXI Technologies

128 Rue de la Boétie,
75008, Paris, France

bonjour@datascientist.fr

+33 1 70 39 08 31

+33 6 86 99 34 78

© 2026 DataScientist.fr - AXI Technologies - Tous droits réservés