Verzeichnisinhalt nach Art und Name sortieren
Verfasst: Montag 7. Januar 2008, 14:25
Hallo zusammen.
Für ein kleines Projekt brauche ich eine Funktion, die mir den Inhalt eines Ordners als Liste zurück gibt.
Jedes Element der Liste ist ein Tupel. Das erste Element des Tupels ist immer der Name. Das zweite Tupelelement ist bei Ordnern immer "DIR", ansonsten die Dateigrösse.
Das wäre ja noch kein all zu grosses Problem ... Leider hätte ich diese Liste gerne sortiert:
Zuerst alle Ordner alphabetisch sortiert ohne Unterscheidung zwischen Gross- und Kleinbuchstaben
Danach alle Dateien, auf die gleiche Weise sortiert.
Hier mal mein erster Versuch:
Ich weiss nicht wie ihr darüber denkt, aber mir kommt das etwas kompliziert vor ...
Kann man das auch etwas einfacher machen ?
Für ein kleines Projekt brauche ich eine Funktion, die mir den Inhalt eines Ordners als Liste zurück gibt.
Jedes Element der Liste ist ein Tupel. Das erste Element des Tupels ist immer der Name. Das zweite Tupelelement ist bei Ordnern immer "DIR", ansonsten die Dateigrösse.
Das wäre ja noch kein all zu grosses Problem ... Leider hätte ich diese Liste gerne sortiert:
Zuerst alle Ordner alphabetisch sortiert ohne Unterscheidung zwischen Gross- und Kleinbuchstaben
Danach alle Dateien, auf die gleiche Weise sortiert.
Hier mal mein erster Versuch:
Code: Alles auswählen
def get_dir_content(dirname):
dir_list = []
file_list = []
for name in [".."] + os.listdir(dirname):
path = os.path.join(dirname, name)
if os.path.isdir(path):
dir_list.append((name, "DIR"))
else:
file_list.append((name, str(os.stat(path)[6])))
sort_func = lambda x,y: cmp(x[0].lower(), y[0].lower())
dir_list.sort(sort_func)
file_list.sort(sort_func)
return dir_list + file_list
Kann man das auch etwas einfacher machen ?