Python File Handling

Trouver efficacement des fichiers par extension en Python

Spread the love

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

  1. Utilisation du module glob
  2. Exploitation du module os
  3. Utilisation de pathlib pour les recherches dans un seul répertoire
  4. Recherche récursive avec os.walk
  5. 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *