Maison > développement back-end > Tutoriel Python > Comment rechercher efficacement tous les fichiers \'.txt\' dans les sous-dossiers à l'aide de Python ?

Comment rechercher efficacement tous les fichiers \'.txt\' dans les sous-dossiers à l'aide de Python ?

Patricia Arquette
Libérer: 2024-10-29 19:28:02
original
938 Les gens l'ont consulté

How to Efficiently Find All

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']
Copier après la connexion

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'))]
Copier après la connexion

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]"))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal