Maison > Article > développement back-end > Comment répertorier efficacement les fichiers des sous-dossiers récursifs en Python ?
Lors de la recherche dans les sous-dossiers et de la construction d'une liste de types de fichiers spécifiques, il est essentiel de s'assurer que le sous-dossier La variable pointe vers le bon dossier. L'extrait de code suivant illustre ce problème :
<code class="python">for root, subFolder, files in os.walk(PATH): for item in files: if item.endswith(".txt"): fileNamePath = str(os.path.join(root, subFolder, item))</code>
Ici, la variable subFolder contient une liste de sous-dossiers au lieu du dossier où réside le fichier ITEM. Pour remédier à cela, nous pouvons utiliser le chemin d'accès, représenté par la variable racine, car il contient le chemin de répertoire correct. Cet extrait de code modifié résout le problème :
<code class="python">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']</code>
Une autre approche élégante consiste à utiliser le module glob, qui sélectionne efficacement les fichiers en fonction de leurs extensions :
<code class="python">from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]</code>
Offre Python 3.4 et versions ultérieures une version génératrice de la solution basée sur glob :
<code class="python">from itertools import chain result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))</code>
Enfin, pour Python 3.4, une approche moderne utiliser le module pathlib est :
<code class="python">from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>
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!