Comment lister tous les fichiers d'un répertoire en Python ?

Plusieurs méthodes permettent de lister tous les fichiers d'un répertoire en Python. Le point.

Le langage Python fournit au développeur le module os. Avec ce module, il est possible d'interagir avec le système d'exploitation. On peut par exemple lister tous les fichiers d'un répertoire.

La méthode listdir() liste tous les fichiers et répertoires contenus dans un répertoire passé en paramètres. Pour parcourir les répertoires de manière récursive, il suffit d'exécuter la méthode dans une boucle for... in. Si vous ne souhaitez lister que les fichiers, la méthode isfile() de la classe os.path() permettra de vérifier chaque entrée trouvée. Cette méthode nécessite le chemin complet vers le fichier. On utilise alors la fonction join() pour concaténer le répertoire avec le nom du fichier. Le traitement est ainsi réduit à une seule ligne.

from os import listdir
from os.path import isfile, join
fichiers = [f for f in listdir(monRepertoire) if isfile(join(monRepertoire, f))]

Une autre solution consiste à utiliser la méthode walk(). Cette méthode parcourt de manière récursive un répertoire et retourne un itérateur. Cet itérateur retourne un tuple contenant trois éléments : le chemin vers le répertoire en cours de traitement, la liste des fichiers contenus dans le répertoire et la liste des sous-répertoires. Pour ne récupérer que les fichiers, il faut créer une liste et appeler la méthode extend() qui va concaténer les fichiers dans la liste.

from os import walk
listeFichiers = []
for (repertoire, sousRepertoires, fichiers) in walk(monRepertoire):
 listeFichiers.extend(fichiers)

Si vous ne souhaitez lister que les fichiers du premier répertoire sans ajouter ceux des sous-répertoires, il suffit d'ajouter le mot-clé break afin de sortir directement de la boucle après avoir récupéré la première liste de fichiers.

Python