Ошибка в проге на Питоне (pygame exceptions.UnicodeEncodeError)

Модератор: Модераторы разделов

kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Ошибка в проге на Питоне

Сообщение kinder »

С питоном дело пока ещё иметь не приходилось, разбираюсь по ходу дела.

Скачал прогу pykaraoke ( http://sourceforge.net/projects/pykaraoke/....1.zip/download ) написанную на питоне.
Попытался открыть файл из папки содержащие в пути кирилистические символы *.kar , получил ошибку.

Error opening file.
<type 'exceptions.UnicodeEncodeError'>
'ascii' codec can't encode characters in position 13-18: ordinal not in range(128)


Сначала я подумал что в питоне какието особености с кодировкой при открытии файлов, вставляя принты и миседжбоксы в разные точки начал искать место где открывается файл и где отваливается программа. Выяснил что файл открывается успешно, а сваливается на такой строчке
pygame.mixer.music.load(self.SongDatas[0].GetFilepath())


где self.SongDatas[0].GetFilepath() возвращает полный путь к файлу, к примеру "/home/master/Музыка/с/Karaoke/Жизнь одна.kar"

На сколько я понимаю pygame это некая внешняя библиотека, но вот вопрос в какой форме ей надо передать путь чтобы она не померала? И возможно ли это.
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Ошибка в проге на Питоне

Сообщение kinder »

Как всё запущено... логика мне пока не ясна, но в одних случаях программа не отваливается на pygame в других на вид идентичных - отваливается.
если из консоли запустить pykaraoke то будет отваливаться, если открыть kar файл приложением по умолчанию, отваливаться не будет. Хотя функции передаются совершено одинаковые значения.
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Ошибка в проге на Питоне

Сообщение kinder »

чем дальше в лес тем больше дров... из под рута при запуске с параметром типа pykaraoke file.kar вроде нет заметных проблем. При запуске с параметром но от юзера часть файлов воспроизводится без проблем, на другой части вываливается. (Но вываливается де то в другом месте, пощу чуть позже. Интересно есть ли какие дебагеры для питона, а то возиться с миседжбоксами и постоянной перекомпиляцией муторно и долго.)
Если запускать без параметра, а просто pykaraoke, то отваливается как было определено в первом сообщении - при попытке открыть файл с кирилицей в пути/имени, при вызове pygame.mixer.music.load().
Ничего не ясно.
Спасибо сказали:
Аватара пользователя
n2j2r
Сообщения: 494
Статус: najar

Re: Ошибка в проге на Питоне

Сообщение n2j2r »

может пробелы заэкранировать?
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Ошибка в проге на Питоне

Сообщение kinder »

ага, закомментировать тело функции main() :-)

Не совсем понятно где она проблема и что экранировать.
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Ошибка в проге на Питоне

Сообщение kinder »

Тут бы нормальный отладчик, так чтобы брекпоинты пораставлять. потрассировать шаг за шагом....
Спасибо сказали:
Аватара пользователя
n2j2r
Сообщения: 494
Статус: najar

Re: Ошибка в проге на Питоне

Сообщение n2j2r »

что экранировать

пробелы в названиях файлов при передачи их pykaraoke
Тут бы нормальный отладчик, так чтобы брекпоинты пораставлять. потрассировать шаг за шагом....

pydb, pdb. Есть еще IDE со встроенным отладчиком - IDLE
Спасибо сказали:
kinder
Сообщения: 151
ОС: Mandriva 2009 Spring

Re: Ошибка в проге на Питоне

Сообщение kinder »

Ага, я уже нашёл pudb, понравилось, как раз то что я хотел :-)

Нашёл точку облома.

Отваливается на pygame.mixer.music.play()
Модуль pykar.py строка 1201 (приблизительно я файл редактировал строки могут быть смещены)

Но что существенно при вызове этой функции облом происходит раньше чем вызов функции обработки событий midiProcessEvent() (если я правильно догадываюсь о смысле этой функции).

У меня есть лёгкое подозрение что баг в библиотеке pygame.
Но хорошо бы разобраться с тонкостями её инициализации, может у караоке на этом этапе есть проблемы. Но отваливается кажись в этой библиотеке.
Спасибо сказали: