Comment obtenir tous les fichiers d'un répertoire

Jinku Hu 30 janvier 2023
  1. os.listdir pour obtenir tous les fichiers d’un répertoire en Python
  2. os.walk pour obtenir tous les fichiers dans un répertoire en Python
  3. glob.glob pour récupérer tous les fichiers d’un répertoire en Python
Comment obtenir tous les fichiers d'un répertoire

Vous pourriez avoir au moins 3 méthodes pour lister tous les fichiers d’un répertoire en Python, en utilisant les fonctions Python os.listdir, os.walk et glob.glob.

Voici la présomption de ce tutoriel,

  1. Version Python - Python 3
  2. Le nom du chemin est dirPath et il existe dans le système, par conséquent, nous n’aurons pas besoin de vérifier l’existence du répertoire.

os.listdir pour obtenir tous les fichiers d’un répertoire en Python

Le fichier os.listdir liste tous les fichiers et répertoires du répertoire, il a donc besoin de code supplémentaire pour filtrer les fichiers du résultat.

import os

dirPath = r"C:\git\DelftStack\content"
result = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f))]
print(result)

os.listdir retourne seulement le chemin relatif des fichiers ou des dossiers en référence à dirPath, et la fonction os.path.isfile a besoin du chemin complet pour vérifier si c’est un fichier ou non, donc nous devons utiliser os.path.join pour combiner le dirPath et les résultats de os.listdir pour obtenir le chemin complet des fichiers ou des chemins.

os.walk pour obtenir tous les fichiers dans un répertoire en Python

os.walk generates the file names in the given directory by traversing the tree top-down (per default) or bottom-up. It yields a 3-tuple (dirpath, dirname, filenames) each time it walks to the directory in the tree (including top itself).

Tous les fichiers sont inclus dans le tuple pour le premier rendement de os.walk, donc une méthode Python est

import os

dirPath = r"C:\git\DelftStack\content"
result = next(os.walk(dirPath))[2]
print(result)

glob.glob pour récupérer tous les fichiers d’un répertoire en Python

Le module glob trouve tous les pathnames correspondant au motif spécifique donné selon les règles utilisées dans le shell Unix. Le module glob.glob retourne la liste des noms de chemins qui correspondent au modèle de noms de chemins donné. Le chemin du fichier a le motif *.*, c’est ce qui sera passé à glob.glob comme argument d’entrée.

import glob

dirPathPattern = r"C:\git\DelftStack\content\*.*"
result = glog.glob(dirPathPattern)
print(result)

glob.glob retourne le chemin complet des fichiers correspondants, comme C:\git\DelftStack\content\about.rst.

Attention

Le résultat de la méthode glob.glob comme montré ici ne pourrait pas garantir qu’il s’agit de fichiers uniquement parce qu’elle vérifie seulement si le nom du chemin correspond au motif, mais ne vérifie pas s’il s’agit d’un fichier ou d’un répertoire.

Par exemple, si un répertoire a le nom d’un motif comme test.test, alors ce répertoire est aussi inclus dans le résultat.

Si vous devez vous assurer que la sortie ne contient que des fichiers, vous devez le vérifier avec la fonction os.path.isfile.

Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - Python File

Article connexe - Python Dictionary