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.
Vielleicht gibt es Dir einen Hinweis, aber wahrscheinlich leistet es nicht ganz was Du möchtest. Na, jedenfalls hast Du hiermit einen Schnipsel aus meinem aktuellen Projekt. Du kannst ja noch damit rumspielen, bis es Dir passt.
def GetAllFiles(path,format='ASA'):
"""
will return a list of all files matching the appropiate format
"""
if format == 'ASA': #default
suffix = '.INF'
else:
sys.exit('Error: unknown file format')
#if there is no such file in the directory, but in sub-directories
if len(glob.glob(path + '*' + suffix)) == 0:
matches = []
for root,dirs,files in os.walk('./',topdown=False):
for f in files:
if suffix in f:
fname = root + '/' + f
matches.append(fname)
return matches
#if files directly found in path
else:
return glob.glob(path + '*' + suffix)
Statt './' oder '.' für das aktuelle Verzeichnis würde ich `os.path.curdir` empfehlen und die Pfade sollte man besser mit `os.path.join()` zusammensetzen und nicht mit 'blah' + '/' + 'spam'.
Und wenn ich im aktuellen Verzeichnis mit dem `walk()` anfange, dann sind da doch auch die Dateien im aktuellen Verzeichnis dabei!? Was soll das dann mit den `glob()` und dem else-Zweig!?
was den ersten Teil des Kommentares angeht, hast Du zwar recht, aber ich war ja noch am Basteln und habe den Code oft auf andere Module abstimmen müssen. Da bleibt manchmal die Sauberkeit auf der Strecke.
Was den zweiten Teil Absatz angeht: Die Antwort steht im Kommentar - das ist so gewollt: Entweder das Eine oder das Andere soll zurückgegeben werden. Ja, auch das geht eleganter - ich arbeite dran. Aber im Moment machen mir eher einige Module des GUI Sorgen, während die anderen Utilities und der Kern der Anwendung wenigstens funktionieren ... und sauberer geschrieben sind. Refactoring steht da erst an zweiter Stelle. Deswegen auch meine Bemerkung a la "Du kannst ja noch damit rumspielen, bis es Dir passt.". Das Schnipsel beantwortet doch zumindest die Frage, oder?