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

Linda Hamilton
Libérer: 2024-10-29 02:35:29
original
912 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal