Dateien mit spezieller Endung anzeigen lassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

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
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Man kann dabei natürlich auch auf etwas hübsches, eingebautes zurückgreifen: Das glob-Modul :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
ngulam
User
Beiträge: 35
Registriert: Freitag 18. Oktober 2013, 11:03

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
งูหลาม
Benutzeravatar
snafu
User
Beiträge: 6831
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@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 ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten