Hallo,
ich habe folgendes Problem:
ich möchte ein plattformunabhängiges Script haben, das mir eine Datei erstellt, in der Dateinamen mit Pfadnamen stehen. Das soll sowohl unter Linux als auch unter Windows laufen können. Die resultierende Datei soll auch unter Linux benutzt werden können, also muß Groß und Kleinschreibung stimmen.
Ich bekomme als Kommandozeilenparameter ein Startverzeichnis, das ich in Windows natürlich z.B. auch komplett kleingeschrieben übergeben kann.
Nun meine Frage:
Gibt es eine Möglichkeit für einen Pfadnamen den Namen zu bekommen, wie er original auch gespeichert ist, d.h. case-sensitiv? ich habe im Modul os.path schon alles durchprobiert, aber nix hat bis jetzt geholfen
Viele Grüße
Samuel
problem mit windows und case-insensitivy
hey,
wenn ich dich richtig verstanden habe, willst du aus einem nicht-case-sensitiven einen case-sensitiven Pfadnamen machen. Spontan fällt mir dazu keine vorgefertigte Pythonmethode ein, aber du kannst dir ganz einfach selber eine basteln. Z.B. so:
Erklärung:
Du schaust dir einfach mit os.listdir den Inhalt des übergeordneten Ordners an und merkst dir den Index des betreffenden Objekts. Anschließend holst du dir den Originalnamen mit Hilfe von os.listdir und des Indexes. Das machst du rekursiv für alle Pfadbestandteile.
cu
Chris
wenn ich dich richtig verstanden habe, willst du aus einem nicht-case-sensitiven einen case-sensitiven Pfadnamen machen. Spontan fällt mir dazu keine vorgefertigte Pythonmethode ein, aber du kannst dir ganz einfach selber eine basteln. Z.B. so:
Code: Alles auswählen
def getname(path):
head, tail = os.path.split(path)
if tail:
head = getname(head)
index = map(lambda x: x.lower(), os.listdir(head)).index(tail.lower())
return os.path.join(head, os.listdir(head)[index])
else:
return head
Du schaust dir einfach mit os.listdir den Inhalt des übergeordneten Ordners an und merkst dir den Index des betreffenden Objekts. Anschließend holst du dir den Originalnamen mit Hilfe von os.listdir und des Indexes. Das machst du rekursiv für alle Pfadbestandteile.
Code: Alles auswählen
>>> getname("C:\\programme\\internet explorer")
'C:\\Programme\\Internet Explorer'
Chris