Maison >développement back-end >Tutoriel Python >Comment puis-je rechercher des fichiers de manière récursive en Python, en tenant compte des différentes versions de Python ?

Comment puis-je rechercher des fichiers de manière récursive en Python, en tenant compte des différentes versions de Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 12:22:11422parcourir

How Can I Recursively Find Files in Python, Considering Different Python Versions?

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!

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