
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.169] |
![]() |
|
Сообщ.
#1
,
|
|
|
Моё первое знакомство с удавом :-)
Скачал прогу 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 это некая внешняя библиотека, не ясно только мне чем ей кириллица не нравится. Может кто знает как эту проблему можно решить? |
Сообщ.
#2
,
|
|
|
Как всё запущено... логика мне пока не ясна, но в одних случаях программа не отваливается на pygame в других на вид идентичных - отваливается.
если из консоли запустить pykaraoke то будет отваливаться, если открыть файл приложением по умолчанию, отваливаться не будет. Хотя функции передаются совершено одинаковые значения. Добавлено Чем дальше в лес тем больше дров... из под рута при запуске караоке с параметром типа pykaraoke file.kar вроде нет заметных проблем. При запуске с параметром но от юзера часть файлов воспроизводится без проблем, на другой части вываливается. (Но вываливается де то в другом месте, поищу чуть позже.) Если запускать без параметра, а просто pykaraoke, то отваливается как было определено в первом сообщении - при попытке открыть файл с кирилицей в пути/имени, при вызове pygame.mixer.music.load(). Ничего не ясно. |
Сообщ.
#3
,
|
|
|
Доброго времени суток.Слышал,что в скриптовом языке можно ввести функцию (например,y=sin(x)+3) не в коде программы,а ввести при исполнении с клавиатуры.Хочу реализовать некоторые численные методы.Если знаете как это осуществить,то подскажите пожалуйста.
|
Сообщ.
#4
,
|
|
|
Цитата Feson @ Если знаете как это осуществить,то подскажите пожалуйста. Например, в питоне можно так: ![]() ![]() import math f=eval("lambda x: math.sin(x)+3") print f(1) выведет ![]() ![]() 3.84147098481 Очевидно, что вместо "math.sin(x)+3" можно подставлять и другие выражения. eval("lambda x: ...") вернет функцию, которая вычисляет заданное выражение. Но питон для численных методов вряд ли подойдет из-за медлительности. Я бы посоветовал лисп (а в качестве компилятора - sbcl). В нем можно сделать быстро работающие численные методы, т.к. все будет компилироваться в хорошо оптимизированный машинный код. А выражение, введенное пользователем, можно компилировать в функцию: ![]() ![]() (defvar *f* (compile nil '(lambda (x) (+ (sin x) 3)))) (print (funcall *f* 1)) => 3.841471 Вместо '(lambda (x) (+ (sin x) 3)) можно подставлять выражения, введенные пользователем. |
Сообщ.
#5
,
|
|
|
Огромное спасибо!!!
|