Я пишу сценарий, который должен перемещать некоторый файл вокруг, но, к сожалению, это не кажется os.path
играет с интернационализацией очень хорошо. Когда у меня есть файлы, названные на иврите, есть проблемы. Вот скриншот содержимого каталога:Os.path Python задыхается на иврите filenames
alt text http://eli.thegreenplace.net/files/temp/hebfilenameshot.png
Теперь рассмотрим этот код, который идет через файлы в этом каталоге:
files = os.listdir('test_source')
for f in files:
pf = os.path.join('test_source', f)
print pf, os.path.exists(pf)
Выход есть:
test_source\ex True
test_source\joe True
test_source\mie.txt True
test_source\__()'''.txt True
test_source\????.txt False
Обратите внимание, как os.path.exists
считает, что файл с ивритским именем даже не существует? Как я могу это исправить?
ActivePython 2.5.2 на Windows XP Home SP2
Несмотря на то, что печать по-прежнему невелика в отношении ascii на всех средах. См. Мой ответ. – PEZ
У печати нет проблем при печати unicode: проблема может быть в кодировке stdout. Если консоль является unicode, проблем нет, иначе требуется явный код. – piro
Отлично. Это означает, что вы можете сообщать о правильных именах файлов в Windows, если вы печатаете в дескриптор файла с правильным набором кодировок. Обработчик ошибок «replace» просто сигнализирует о моем поражении. =) – PEZ