"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je utiliser Python pour rechercher efficacement des fichiers dans plusieurs répertoires ?

Comment puis-je utiliser Python pour rechercher efficacement des fichiers dans plusieurs répertoires ?

Publié le 2024-11-08
Parcourir:560

How can I use Python to efficiently search for files across multiple directories?

Rechercher un fichier en Python

La recherche de fichiers en Python peut être un défi lorsque l'emplacement du fichier varie selon les différents systèmes. Heureusement, Python fournit le module os.walk qui vous permet de parcourir les répertoires et de localiser les fichiers sans effort.

os.walk pour la recherche de fichiers

os.walk crée un générateur objet qui parcourt un répertoire et ses sous-répertoires, produisant trois tuples pour chaque itération :

  • root (str) : chemin absolu vers le répertoire actuel directory
  • dirs (list) : Liste des sous-répertoires dans le répertoire actuel
  • files (list) : Liste des fichiers dans le répertoire actuel

Recherche un fichier unique

Pour trouver la première occurrence d'un fichier spécifique, parcourez simplement les tuples générés et vérifiez si le nom du fichier est dans la liste des fichiers :

import os

def find(name, path):
    for root, dirs, files in os.walk(path):
        if name in files:
            return os.path.join(root, name)

Recherche de toutes les occurrences d'un fichier

Pour rechercher toutes les occurrences d'un fichier, créez une liste pour stocker les correspondances :

def find_all(name, path):
    result = []
    for root, dirs, files in os.walk(path):
        if name in files:
            result.append(os.path.join(root, name))
    return result

Modèles de fichiers correspondants

Pour rechercher des fichiers qui correspondent à un modèle, utilisez le module fnmatch :

import os, fnmatch
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))
    return result

find('*.txt', '/path/to/dir')
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3