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:
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
