Recherche récursive de fichiers à l'aide de Python
La recherche récursive de tous les fichiers d'un répertoire peut être une tâche précieuse pour organiser et gérer les systèmes de fichiers. Cet article développera des approches alternatives pour cette tâche, en abordant les limites de l'utilisation de glob.glob().
Pathlib.Path().rglob()
Pour Python versions 3.5 et ultérieures, la méthode pathlib.Path().rglob() fournit un moyen pratique de rechercher des fichiers de manière récursive. Il vous permet de parcourir les répertoires et de renvoyer des objets de chemin pour les fichiers qui correspondent à un modèle spécifié.
from pathlib import Path for path in Path('src').rglob('*.c'): print(path.name)
Glob.glob() avec un paramètre récursif
Alternativement, pour versions antérieures de Python, glob.glob() propose un paramètre récursif qui permet une recherche récursive. En le définissant sur True, il explorera les sous-répertoires et renverra les fichiers correspondants.
from glob import glob for filename in glob('src/**/*.c', recursive=True): print(filename)
Os.walk() et Fnmatch.filter()
Pour les plus anciens Les versions Python, os.walk() et fnmatch.filter() fournissent un moyen de parcourir de manière récursive une structure de répertoires et de faire correspondre les fichiers à l'aide d'un simple expression.
import fnmatch import os matches = [] for root, dirnames, filenames in os.walk('src'): for filename in fnmatch.filter(filenames, '*.c'): matches.append(os.path.join(root, filename))
Cette approche offre des performances plus rapides que pathlib, en particulier pour les grands ensembles de fichiers.
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!