Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировкой, список папок/файлов 
:(
    Опции темы
Sergey912
Дата 19.1.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Безуспешно пытаюсь решить проблему с кодировкой при получении списка файлов под Win.
Как только видит папку на русском выдает мне:
Код

UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-10: ordinal not in range(128)

Выдает при попытке вывести в консоль или при попытке получить список файлов:
Код

  File "C:\Documents and Settings\Admin\Рабочий стол\Mp3Honey\1.py", line 9, in dirtree
    list = os.listdir(path)
WindowsError: [Error 123] Синтаксическая ошибка в имени файла,: 'D:/????????/*.*'

Искал на форуме, нашел несколько похожих тем, но так и не вижу очевидного нормального решения  smile Что делать?
Нашел http://chardet.feedparser.org/, но его setup не работает, перерыл все никаких "You python dir here" не нашел...
Код

import chardet

говорит что нет такого модуля.
Само приложение с GUI сначала были глюки с текстом на нем, но решилось все через u"Текст". Но когда я пробую перекодировать в юникод папку:
Код

        print unicode(sdir,"utf-8")
        D:/????????

PM MAIL WWW   Вверх
pythonwin
Дата 19.1.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



если скрипт консольный, то использовать нужно кодировку cp866, а если гуишный, то cp1251
PM WWW GTalk Jabber   Вверх
Sergey912
Дата 19.1.2009, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Цитата

если скрипт консольный, то использовать нужно кодировку cp866, а если гуишный, то cp1251 

А как это сделать с полученным путем к папке?
PM MAIL WWW   Вверх
pythonwin
Дата 19.1.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(Sergey912 @  19.1.2009,  12:05 Найти цитируемый пост)
А как это сделать с полученным путем к папке? 

можно пример кода?
PM WWW GTalk Jabber   Вверх
Sergey912
Дата 19.1.2009, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



pythonwin
Сколько угодно smile
Код

sdir = QtGui.QFileDialog.getExistingDirectory(self, "Open Directory","/home", QtGui.QFileDialog.ShowDirsOnly|QtGui.QFileDialog.DontResolveSymlinks)
os.path.isdir(sdir)


Для любой папки с русскими буквами:
Код

list = os.listdir(path)
WindowsError: [Error 123] Синтаксическая ошибка в имени файла,: 'D:/????????/*.*'


После листинга диска через получил:
Код

print os.listdir("d:/")
['\xc0\xf0\xf5\xe8\xe2', '\xcc\xe8\xed\xe8\xc8\xe3\xf0\xfb', '\xcc\xce\xa8']


а потом:
Код

print unicode("'\xc0\xf0\xf5\xe8\xe2'", "windows-1251")
'Архив'

Где зарыто ясно, что делать не ясно :(

Это сообщение отредактировал(а) Sergey912 - 19.1.2009, 09:24
PM MAIL WWW   Вверх
pythonwin
Дата 19.1.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



попробуй 
Код

path = unicode(path, 'cp1251')
list = os.listdir(path)

или так
Код

path = unicode(path, 'cp866')
list = os.listdir(path)



Это сообщение отредактировал(а) pythonwin - 19.1.2009, 09:24
PM WWW GTalk Jabber   Вверх
Sergey912
Дата 19.1.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



pythonwin
Выше только отредактирова, проблема именно в QtGui.QFileDialog
PM MAIL WWW   Вверх
aspolyakov
Дата 21.1.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.9.2008
Где: Russia, Urals, Ye katerinburg

Репутация: нет
Всего: нет



Sergey912, Как ты это обошел? у меня таже проблема, но пока в долгий ящик отложена
PM MAIL WWW ICQ Skype   Вверх
Sergey912
Дата 22.1.2009, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



aspolyakov
Тут нашел решение:
http://python.su/forum/viewtopic.php?id=3581

p.s. Вообще не разбирался пока с PyQt+кодировки, удачно под руку попалось.
PM MAIL WWW   Вверх
pythonwin
Дата 22.1.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(Sergey912 @  22.1.2009,  03:52 Найти цитируемый пост)
p.s. Вообще не разбирался пока с PyQt+кодировки, удачно под руку попалось. 

смотри ответ:
Цитата

Вот это и говорит о том, что проблема отнюдь не в GUI ;).

PM WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1213 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.