C’est ce que j’ai :
mais je veux rechercher les sous-dossiers de la src. Quelque chose comme ça pourrait fonctionner :
Mais c’est évidemment limitée et maladroit.
C’est ce que j’ai :
mais je veux rechercher les sous-dossiers de la src. Quelque chose comme ça pourrait fonctionner :
Mais c’est évidemment limitée et maladroit.
Utiliser os.walk
récursive de pied un répertoire et d' fnmatch.filter
de match contre 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))
Pour les versions de Python âgés de plus de 2.2, utilisez glob.glob
contre chaque nom de fichier au lieu de fnmatch.filter
.
J’ai modifié le module glob pour soutenir ** pour la globalisation récursive :
https://github.com/miracle2k/python-Glob2/
Utile lorsque vous souhaitez fournir à vos utilisateurs la possibilité d’utiliser le ** syntaxe et donc os.walk() seul n’est pas assez bon.
import os, fnmatch
def recursive_glob(treeroot, pattern):
results = []
for base, dirs, files in os.walk(treeroot):
goodfiles = fnmatch.filter(files, pattern)
results.extend(os.path.join(base, f) for f in goodfiles)
return results
fnmatch
vous donne exactement les mêmes modèles qu' glob
, donc c'est vraiment un excellent remplacement pour les glob.glob
avec très proche de la sémantique. Un processus itératif de version (par exemple un générateur), OIE un remplacement pour glob.iglob
, est une simple adaptation (juste yield
les résultats intermédiaires que vous allez, au lieu de extend
ing une seule liste de résultats pour retourner à la fin).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.