Die Antwort ist den bestehenden sehr ähnlich, aber leicht optimiert.
So können Sie alle Dateien oder Ordner nach Muster finden:
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)
)
entweder durch Teilzeichenfolge:
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
)
oder mit einem Prädikat:
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)
)
Um nur Dateien oder nur Ordner zu durchsuchen, ersetzen Sie "dirs + files" beispielsweise durch "dirs" oder nur "files", je nachdem, was Sie benötigen.
Grüße.