Python: Liste sortierter Dateinamen
Verfasst: Sa, 20.02.2016 19:13
Ich möchte eine Liste von Dateinamen ausgeben, und zwar unabhängig von Groß-/Kleinschreibung sortiert nach den eigentlichen Namen und erst sekundär nach der Erweiterung.
Meine Lösung sieht so aus:
Welche bessere Lösung gibt es?
Schöne Grüße
Volker
Meine Lösung sieht so aus:
Code: Alles auswählen
def sort_file_names(fileNames, down=False):
"""
Sortiert eine Liste von Dateinamen alphanumerisch nach Großbuchstaben.
Sortiert primär die eigentlichen Namen, sekundär die Ergänzungen.
Gibt eine sortierte Kopie der Liste zurück.
"""
import os
if len(fileNames) == 0:
return []
maxLen = max([len(os.path.splitext(n)[0]) for n in fileNames])
# Normiert die Namen linksbündig auf gleiche Länge.
adjustedNames = [u[0].ljust(maxLen) + u[1]
for u in [os.path.splitext(n.upper())
for n in fileNames]]
dictOfNames = {key: value for key, value in zip(adjustedNames, fileNames)}
return [dictOfNames[key] for key in sorted(adjustedNames, reverse=down)]
Schöne Grüße
Volker