Python open () поведение файла unicode filename различается в разных операционных системах

С именем файла, похожим на:

filename = u"/direc/tories/español.jpg"

И используя open () как:

fp = open(filename, "rb")

Это будет правильно откройте файл в OSX (10.7), но в Ubuntu 11.04 функция open () попытается открыть u "espa \ xf1ol.jpg" , и это завершится ошибкой IOError.

Пытаясь исправить это, я проверил sys.getfilesystemencoding () в обеих системах, обе установлены на utf-8 (хотя Ubuntu сообщает о верхнем регистре, то есть UTF-8, не уверен если это актуально). Я также установил # - * - coding: utf-8 - * - в файле python, но я уверен, что это влияет только на кодировку внутри самого файла, а не на какие-либо внешние функции или то, как работает python. с системными ресурсами. Файл существует в обеих системах с правильно отображаемым eñe.

Конечный вопрос: как открыть файл español.jpg в системе Ubuntu?

Редактировать: Строка español.jpg на самом деле выходит из базы данных через ORM Django (ImageFileField), но к тому времени, когда я столкнулся с ней и увидел разницу в поведении, у меня есть единственная строка Unicode, которая является абсолютный путь к файлу.

5
задан Marcin 29 February 2012 в 14:15
поделиться