La réponse est très similaire à celles existantes, mais légèrement optimisée.
Ainsi, vous pouvez trouver tous les fichiers ou dossiers par modèle:
def iter_all(pattern, path):
return (
os.path.join(root, entry)
for root, dirs, files in os.walk(path)
for entry in dirs + files
if pattern.match(entry)
)
soit par sous-chaîne:
def iter_all(substring, path):
return (
os.path.join(root, entry)
for root, dirs, files in os.walk(path)
for entry in dirs + files
if substring in entry
)
ou en utilisant un prédicat:
def iter_all(predicate, path):
return (
os.path.join(root, entry)
for root, dirs, files in os.walk(path)
for entry in dirs + files
if predicate(entry)
)
pour rechercher uniquement des fichiers ou uniquement des dossiers - remplacez par exemple «dirs + files» par uniquement «dirs» ou seulement «files», selon ce dont vous avez besoin.
Cordialement.