problem mit windows und case-insensitivy

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.
samdi
User
Beiträge: 1
Registriert: Freitag 8. Oktober 2004, 13:00

problem mit windows und case-insensitivy

Beitragvon samdi » Freitag 8. Oktober 2004, 13:40

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
rAiNm4n
User
Beiträge: 19
Registriert: Mittwoch 4. Juni 2003, 11:30
Wohnort: Berlin

Beitragvon rAiNm4n » Freitag 8. Oktober 2004, 15:36

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:

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


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.

Code: Alles auswählen

>>> getname("C:\\programme\\internet explorer")
'C:\\Programme\\Internet Explorer'


cu
Chris

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder