Dateien und Verzeichnisse finden

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Weil ich so in Suchlaune bin, hier eine Funktion, die auf `os.walk()` aufsetzt und optional eine Filterfunktion annimmt:

Code: Alles auswählen

import os

def find(path='.', condition=None):
    if not condition:
        condition = lambda _: True
    for root, dirs, files in os.walk(path):
        for dirname in dirs:
            pathname = os.path.join(root, dirname)
            if condition(pathname):
                yield pathname
        for filename in files:
            pathname = os.path.join(root, filename)
            if condition(pathname):
                yield pathname
Beispiele:

Code: Alles auswählen

from fnmatch import fnmatch
import os
from os.path import expanduser, isdir

# alle Verzeichnisse im Persönlichen Ordner
for dirpath in find(expanduser('~'), isdir):
    print dirpath

# alle *.py-Dateien ausgehend vom Wurzelverzeichnis
for path in find(os.sep, lambda p: fnmatch(p, '*.py')):
    print path
stuhlbein
User
Beiträge: 89
Registriert: Freitag 9. Januar 2009, 16:08

Dir scheint es aber auch spass zu machen dinge immer wieder neu zu erfinden? :D
Antworten