Comment rechercher efficacement et récursivement des sous-dossiers pour des types de fichiers spécifiques
Lors de l'écriture de scripts, il devient souvent nécessaire d'effectuer une recherche approfondie dans les sous-dossiers d'un dossier principal . En Python, la fonction os.walk peut parcourir les répertoires de manière récursive. Cependant, extraire uniquement les fichiers d'un type spécifique peut s'avérer délicat.
Dans l'exemple fourni, l'objectif est de créer une liste de tous les fichiers ".txt" au sein d'un dossier principal et de ses sous-dossiers. Le code utilise os.walk pour parcourir tous les fichiers et sous-dossiers, mais subFolder contient une liste de sous-dossiers au lieu du sous-dossier correct pour chaque fichier.
Pour résoudre ce problème, la variable "racine", qui représente le sous-dossier actuel. chemin du répertoire, doit être utilisé à la place du sous-dossier. Chaque fichier a sa racine correspondante, qui indique son emplacement dans le système de fichiers.
Voici une solution optimisée :
import os result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']
Ce code parcourt tous les répertoires racine, sous-répertoires et fichiers du Dossier CHEMIN. Les fichiers avec l'extension ".txt" sont ajoutés à la liste des résultats.
Alternativement, le module glob peut simplifier la sélection basée sur l'extension :
from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
Pour Python 3.4, une solution plus concise l'utilisation de Pathlib est disponible :
from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))
Ces solutions recherchent efficacement les sous-dossiers, extraient les fichiers en fonction de leur extension et les renvoient sous forme de liste.
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!