На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > Питон. , pygame exceptions.UnicodeEncodeError
      Моё первое знакомство с удавом :-)

      Скачал прогу 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 это некая внешняя библиотека, не ясно только мне чем ей кириллица не нравится.

      Может кто знает как эту проблему можно решить?
        Как всё запущено... логика мне пока не ясна, но в одних случаях программа не отваливается на pygame в других на вид идентичных - отваливается.
        если из консоли запустить pykaraoke то будет отваливаться, если открыть файл приложением по умолчанию, отваливаться не будет. Хотя функции передаются совершено одинаковые значения.

        Добавлено
        Чем дальше в лес тем больше дров... из под рута при запуске караоке с параметром типа pykaraoke file.kar вроде нет заметных проблем. При запуске с параметром но от юзера часть файлов воспроизводится без проблем, на другой части вываливается. (Но вываливается де то в другом месте, поищу чуть позже.)
        Если запускать без параметра, а просто pykaraoke, то отваливается как было определено в первом сообщении - при попытке открыть файл с кирилицей в пути/имени, при вызове pygame.mixer.music.load().
        Ничего не ясно.
          Доброго времени суток.Слышал,что в скриптовом языке можно ввести функцию (например,y=sin(x)+3) не в коде программы,а ввести при исполнении с клавиатуры.Хочу реализовать некоторые численные методы.Если знаете как это осуществить,то подскажите пожалуйста.
            Цитата Feson @
            Если знаете как это осуществить,то подскажите пожалуйста.

            Например, в питоне можно так:
            ExpandedWrap disabled
              import math
              f=eval("lambda x: math.sin(x)+3")
              print f(1)

            выведет
            ExpandedWrap disabled
              3.84147098481

            Очевидно, что вместо "math.sin(x)+3" можно подставлять и другие выражения. eval("lambda x: ...") вернет функцию, которая вычисляет заданное выражение.
            Но питон для численных методов вряд ли подойдет из-за медлительности. Я бы посоветовал лисп (а в качестве компилятора - sbcl). В нем можно сделать быстро работающие численные методы, т.к. все будет компилироваться в хорошо оптимизированный машинный код. А выражение, введенное пользователем, можно компилировать в функцию:
            ExpandedWrap disabled
              (defvar *f* (compile nil '(lambda (x)  (+ (sin x) 3))))
              (print (funcall *f* 1))
              =>
              3.841471

            Вместо '(lambda (x) (+ (sin x) 3)) можно подставлять выражения, введенные пользователем.
            Сообщение отредактировано: dmitry_vk -
              Огромное спасибо!!!
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0480 ]   [ 15 queries used ]   [ Generated: 27.04.24, 21:51 GMT ]