Maison  >  Article  >  développement back-end  >  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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 02:35:29821parcourir

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

Trouver 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
  • dirs (list) : liste des sous-répertoires dans le répertoire courant
  • fichiers (liste) : Liste des fichiers dans le répertoire courant

Recherche d'un seul fichier

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 :

<code class="python">import os

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

Recherche de toutes les occurrences d'un fichier

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

<code class="python">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</code>

Modèles de fichiers correspondants

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

<code class="python">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')</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn