Seite 1 von 1

Dateien mit spezieller Endung anzeigen lassen

Verfasst: Sonntag 11. Januar 2015, 11:19
von erdmulch
Hallo zusammen,

Ich habe folgendes Problem:
ich will alle Dateien auflisten, die mit "log" enden
leider werden im Moment alle Dateien aufgelistet
kann mir jemand sagen wie man so was macht?
vielen Dank im voraus

hier mein Code:

Code: Alles auswählen

files = os.listdir("/home")
print files

Re: Dateien mit spezieller Endung anzeigen lassen

Verfasst: Sonntag 11. Januar 2015, 11:40
von Sirius3
@erdmulch: man überlegt sich welche Bedingung erfüllt sein muß, damit eine Datei auf "log" endet. Dann geht man die ganze Liste durch, und fügt nur die Elemente in eine neue Liste ein, die diese Bedingung erfüllen.

Re: Dateien mit spezieller Endung anzeigen lassen

Verfasst: Sonntag 11. Januar 2015, 13:03
von Hyperion
Man kann dabei natürlich auch auf etwas hübsches, eingebautes zurückgreifen: Das glob-Modul :-)

Re: Dateien mit spezieller Endung anzeigen lassen

Verfasst: Sonntag 11. Januar 2015, 13:31
von ngulam
Ich nutze dazu gerne einen Generator (aus meiner Toolbox, weil man sowas ja öfter braucht)

Code: Alles auswählen

FILEPATH = '/home'
#
allfiles = gen_find('*.log', FILEPATH)

for filename in allfiles:
    print filename

def gen_find(filepattern, topdir):
    """
    Generate all files matching the search pattern in starting dir or below.
    2014-10-02
    from David Beazley
    http://de.slideshare.net/dabeaz/generator-tricks-for-systems-programmers-v20
    """
    import os
    import fnmatch
    for path, dirlist, filelist in os.walk(topdir):
        for name in fnmatch.filter(filelist, filepattern):
            yield os.path.join(path, name)
Sucht alle *.log ab dem angegebenen Verzeichnis

Re: Dateien mit spezieller Endung anzeigen lassen

Verfasst: Sonntag 11. Januar 2015, 14:11
von snafu
@ngulam: ``glob.iglob()`` ist dir aber bekannt, oder? Gut, deine Variante durchsucht auch noch alle Unterverzeichnisse. Fragt sich nur, ob der Threadersteller ein solches Verhalten überhaupt wünscht.

Re: Dateien mit spezieller Endung anzeigen lassen

Verfasst: Sonntag 11. Januar 2015, 14:16
von Hyperion
@snafu: Die Kombi aus ``os.walk`` und ``fnmatch`` wird gerne genommen, wenn man *rekursiv* Dateien suchen möchte. Das bietet das ``glob`` iirc Modul nicht. Der Fokus liegt dabei also eher auf dem rekursiven Ansatz als auf dem Iterator ;-)