Mac обычно работает с файловой системой HFS +, которая нормализует пути. То есть, если вы сохраните файл с акцентом é в нем (например, u'\xe9'
), а затем выполните os.listdir
, вы увидите, что имя файла преобразовано в u'e\u0301'
. Это нормальная нормализация Unicode NFD, которую может обрабатывать the Python unicodedata
module. К сожалению, HFS + не полностью соответствует NFD, что означает, что некоторые пути не будут нормализованы, например, 福 (u'\ufa1b'
) не будет изменен, хотя его форма NFD равна u'\u798f'
.Как преобразовать путь в Mac OS X путь, нормальную форму почти-NFD?
Итак, как выполнить нормализацию в Python? Я был бы в порядке, используя собственные API, если я могу назвать их с Python.
Глупый взлом, который должен работать: создайте пустой файл в каталоге temp и перечислите его. – Dougal
Обратите внимание, что взлом файла temp очень дорог, если вы считаете, что вам может быть передан путь, который представляет собой глубокую структуру каталогов. Вам нужно будет сделать os.makedirs и прикоснуться к файлу, а затем перейти в структуру каталогов, чтобы увидеть, что создано. –
Предположительно нормализация согласована между именами каталогов и файлов, поэтому вы можете разделить части и создавать файлы только для тех, у которых есть возможно изменение символов, чтобы избежать прогулок по каталогам. Но да, это, очевидно, не очень хорошее решение. – Dougal