Mac arbeitet normalerweise auf dem HFS + Dateisystem, welche Pfade normalisiert. Das heißt, wenn Sie eine Datei mit Akzent darin speichern (u'\xe9'
) zum Beispiel, und dann eine os.listdir
machen, werden Sie sehen, dass der Dateiname in u'e\u0301'
konvertiert wurde. Dies ist eine normale Unicode-NFD-Normalisierung, die the Python unicodedata
module verarbeiten kann. Leider ist HFS + nicht vollständig konsistent mit NFD, was bedeutet, dass einige Pfade nicht normalisiert werden, zum Beispiel 福 (u'\ufa1b'
) wird nicht geändert, obwohl seine NFD-Form ist u'\u798f'
.Wie wandere ich Pfad zu Mac OS X um, die fast-NFD-Normalform?
Also, wie die Normalisierung in Python zu tun? Ich würde gut mit nativen APIs arbeiten, solange ich sie von Python aufrufen kann.
Ein dummer Hack, der funktionieren sollte: eine leere Datei in einem temporären Verzeichnis erstellen und auflisten. – Dougal
Beachten Sie, dass die temporäre Datei Hack wird sehr teuer, wenn man bedenkt, dass Sie einen Pfad übergeben werden können, die eine tiefe Verzeichnisstruktur darstellt. Sie müssten os.makedirs ausführen und die Datei berühren und dann die Verzeichnisstruktur durchlaufen, um zu sehen, was erstellt wurde. –
Vermutlich ist die Normalisierung zwischen Verzeichnis- und Dateinamen konsistent, so dass Sie die Teile aufgespalten konnte und nur Dateien für diejenigen machen, die haben Zeichen Fuß Verzeichnisse zu vermeiden möglicherweise verändernden. Aber ja, das ist offensichtlich keine sehr gute Lösung. – Dougal