Maison >développement back-end >Tutoriel Python >Comment puis-je rechercher de manière récursive des fichiers en Python à l'aide de « pathlib », « glob » et « os.walk » ?

Comment puis-je rechercher de manière récursive des fichiers en Python à l'aide de « pathlib », « glob » et « os.walk » ?

DDD
DDDoriginal
2024-12-11 20:16:15312parcourir

How Can I Recursively Find Files in Python Using `pathlib`, `glob`, and `os.walk`?

Recherche de fichiers de manière récursive : exploration de pathlib.rglob(), glob.glob() et os.walk()

Lorsque vous traitez avec Avec des structures de répertoires complexes, il devient essentiel de localiser les fichiers de manière récursive. Cette tâche peut être simplifiée à l'aide de divers modules et méthodes Python.

Une approche consiste à utiliser pathlib.Path().rglob() introduit dans Python 3.5. Elle permet une recherche récursive simple de fichiers :

from pathlib import Path

for path in Path('src').rglob('*.c'):
    print(path.name)

Alternativement, glob.glob() fournit une autre option pour la liste récursive des fichiers :

from glob import glob

for filename in glob('src/**/*.c', recursive=True):
    print(filename)

Cette méthode également prend en charge les fichiers correspondants commençant par un point (.).

Pour les anciennes versions de Python ou lorsque la vitesse est cruciale, os.walk() offre une solution fiable :

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))

En choisissant la méthode appropriée en fonction de votre version de Python et de vos exigences de performances, vous pouvez efficacement lister les fichiers de manière récursive dans les répertoires et sous-répertoires.

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