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 ?