Trouver des fichiers avec des extensions spécifiques est une tâche courante lors du travail avec des fichiers en Python. Cet article explore plusieurs méthodes efficaces et polyvalentes pour y parvenir, répondant à différents besoins et styles de codage. Nous aborderons différents modules et techniques Python, vous permettant de choisir l’approche optimale pour votre cas d’utilisation spécifique.
Table des matières
- Utilisation du module
glob
- Exploitation du module
os
- Utilisation de
pathlib
pour les recherches dans un seul répertoire - Recherche récursive avec
os.walk
- Recherche récursive avec
pathlib.rglob
1. Utilisation du module glob
Le module glob
offre un moyen concis de localiser les fichiers correspondant à un motif défini dans un seul répertoire. Sa fonction glob()
renvoie une liste de chemins qui satisfont au motif.
import glob
def find_files_with_extension_glob(directory, extension):
"""Trouve les fichiers avec une extension donnée en utilisant glob.glob()."""
return glob.glob(f"{directory}/*{extension}")
# Exemple :
files = find_files_with_extension_glob("./my_directory", ".txt")
print(files)
2. Exploitation du module os
Le module os
offre un contrôle plus granulaire. os.listdir()
liste toutes les entrées d’un répertoire, permettant un filtrage personnalisé.
import os
def find_files_with_extension_os(directory, extension):
"""Trouve les fichiers avec une extension donnée en utilisant os.listdir()."""
files = []
for filename in os.listdir(directory):
if filename.endswith(extension):
files.append(os.path.join(directory, filename))
return files
# Exemple :
files = find_files_with_extension_os("./my_directory", ".txt")
print(files)
3. Utilisation de pathlib
pour les recherches dans un seul répertoire
Le module pathlib
fournit une approche orientée objet. Sa méthode glob()
offre une syntaxe plus propre que glob.glob()
.
from pathlib import Path
def find_files_with_extension_pathlib(directory, extension):
"""Trouve les fichiers avec une extension donnée en utilisant pathlib.glob()."""
return list(Path(directory).glob(f"*{extension}"))
# Exemple :
files = find_files_with_extension_pathlib("./my_directory", ".txt")
print(files)
4. Recherche récursive avec os.walk
Pour la recherche dans les sous-répertoires, os.walk()
parcourt l’arborescence des répertoires, vous permettant de vérifier chaque fichier pour l’extension souhaitée.
import os
def find_files_recursive_os(directory, extension):
"""Trouve récursivement les fichiers avec une extension donnée en utilisant os.walk()."""
files = []
for root, _, filenames in os.walk(directory):
for filename in filenames:
if filename.endswith(extension):
files.append(os.path.join(root, filename))
return files
# Exemple :
files = find_files_recursive_os("./my_directory", ".txt")
print(files)
5. Recherche récursive avec pathlib.rglob
La méthode rglob()
de pathlib
offre la solution la plus élégante pour les recherches récursives.
from pathlib import Path
def find_files_recursive_pathlib(directory, extension):
"""Trouve récursivement les fichiers avec une extension donnée en utilisant pathlib.rglob()."""
return list(Path(directory).rglob(f"*{extension}"))
# Exemple :
files = find_files_recursive_pathlib("./my_directory", ".txt")
print(files)
N’oubliez pas de créer un dossier « my_directory » avec quelques fichiers .txt pour que les exemples fonctionnent correctement. Choisissez la méthode qui correspond le mieux à votre style de codage et aux exigences de votre projet. Pour les recherches simples dans un seul répertoire, glob
ou pathlib.glob()
sont d’excellents choix. Pour les recherches récursives, pathlib.rglob()
offre la solution la plus concise et la plus lisible.