Maison >développement back-end >Tutoriel Python >Comment puis-je répertorier de manière récursive tous les fichiers d'un répertoire à l'aide de Python ?

Comment puis-je répertorier de manière récursive tous les fichiers d'un répertoire à l'aide de Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-19 17:21:10842parcourir

How Can I Recursively List All Files in a Directory Using Python?

Itérer récursivement sur les fichiers

Parcourir récursivement les structures de répertoires pour répertorier tous les fichiers est un besoin de programmation courant. Dans ce contexte, explorons comment y parvenir efficacement en Python.

Une approche consiste à utiliser la méthode pathlib.Path().rglob(), introduite dans Python 3.5. Il fournit un moyen pratique d'identifier tous les fichiers correspondant à un modèle spécifique dans un répertoire et ses sous-répertoires :

from pathlib import Path

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

Si vous préférez utiliser le module glob, vous pouvez exploiter sa fonction glob() avec le recursive=True argument :

from glob import glob

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

Une autre option, compatible avec les anciennes versions de Python, consiste à utiliser os.walk() pour le parcours récursif et fnmatch.filter() pour le modèle matching :

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

La technique os.walk() peut s'avérer plus rapide dans les scénarios avec un nombre important de fichiers en raison de la charge moindre associée au module pathlib.

Quelle que soit l'approche que vous choisissez, ces Les méthodes vous aideront efficacement à identifier et répertorier de manière récursive les fichiers dans un répertoire spécifié et ses sous-dossiers.

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