Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: вопросы по Python  (Прочитано 6569 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
вопросы по Python
« : 13 Июля 2006, 19:06:28 »
Надо зпускать из проги на питоне другую программку(если конкретно то Octave) имеющую интерфейс в виде командной строки, нужно иметь возможность записывать строки в входной поток  этой проги (типа как если бы набивали с клавы команды) и читать что выводит прога в поток вывода. Ковырсл модули popen2 (или аналогичные или аналогичные функции из модулс os) Octave запускается но и все ни на какие попытки ей что-то передать не реагирует и считывать ничего не считывается - что делать не соображу (с Питоном недавно только начал работать). Может кто решал аналогичную задачу?

Оффлайн Stalwart

  • Активист
  • *
  • Сообщений: 730
  • All Your Base...
    • Просмотр профиля
Re: вопросы по Python
« Ответ #1 : 13 Июля 2006, 20:20:52 »
Решал. Только не писал в поток, а только считывал аутпут ::) Покури, может пригодится

def MPDInfo(word, word_eol, userdata):
        mpc = popen ('mpc | grep -v volume')
        songtitle = mpc.readline()
        if songtitle != '':
                songtitle = unicode(songtitle,"KOI8-R")
                songtitle = songtitle.encode("cp1251")
                songstatus = mpc.readline()
                xchat.command ("ME" + " is listening to: " + songtitle[:-1] + " >>> "  + songstatus[:-1])
        else: xchat.command ("ME is listening to: Silence...")
        return xchat.EAT_ALL
ArchLinux // openbox

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #2 : 15 Июля 2006, 14:51:24 »
ок спасибо буду пробовать

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #3 : 15 Июля 2006, 16:55:57 »
да все работает. а не работало потому что с в терминале это делал, почему не знаю. НО если написать тоже самое в файле а потом запустить его на выполнение то все работает

Оффлайн Stalwart

  • Активист
  • *
  • Сообщений: 730
  • All Your Base...
    • Просмотр профиля
Re: вопросы по Python
« Ответ #4 : 15 Июля 2006, 17:58:07 »
Интерактивный интерпретатор != дебаггер
ArchLinux // openbox

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #5 : 17 Июля 2006, 12:31:17 »
Может кто подскажет можно ли ГУИ сделанный в "GLADE:Дизайнер интерфейсов" как-то прикрутить к проге на питоне?

Оффлайн h8

  • Активист
  • *
  • Сообщений: 395
    • Просмотр профиля
Re: вопросы по Python
« Ответ #6 : 17 Июля 2006, 16:36:26 »
Естественно! Тебе сюда: http://pygtk.org/reference.html и http://pygtk.org/tutorial.html
Ubuntu 11.04 / MacOS X 10.6

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #7 : 17 Июля 2006, 18:35:34 »
ок примерно понял (затор был из-за того что с генерировал сишный код вместо XML)
еще вопросик толи с торможу но как нормально получить доступ к документации в /usr/share/doc ?
в DevHelp с то что надо не найду а там оно лежит свно

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #8 : 18 Июля 2006, 16:02:32 »
есть такой код, ГУИ сделан в GLADE

import pygtk
import gtk
import gtk.glade
import popen2

class GUIOctaveWin:
    def __init__(self,sGUIFileName):
        self.gxml=gtk.glade.XML(sGUIFileName)
        self.gxml.signal_autoconnect(self)

    def on_TaskToOctave_clicked(self,button):
        oInputToOctave=self.gxml.get_widget('InputToOctave')
        oOutputFromOctave=self.gxml.get_widget('OutputFromOctave')
        rOctave,wOctave = popen2.popen2 ('octave')
        wOctave.writelines(oInputToOctave.get_text())
   
    def on_Exit_activate(self,menu):
        gtk.main_quit()
       
oGUIOctave = GUIOctaveWin('guioctave.glade')
gtk.main()

Octave вызывается при нажатии на кнопочку но выполнсется переданная в Октавию команда только после  gtk.main_quit()
в чем может быть дело???

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #9 : 18 Июля 2006, 16:05:03 »
с с тиаким сталкивался но думал что глюк когда обращаешсс к Октавии в функции просто без всяких объектов то все нормально сразу выполнсется а когшда опредслсеш этот вызов внутри класса выполнение происходит только после окончания работы питоновской

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #10 : 18 Июля 2006, 16:28:22 »
помоему сам допер помогает выполнение flush() :)
извинсйте что все тут зафлудил

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #11 : 18 Июля 2006, 17:24:25 »
всеже не работает в указаном выше коде вызов gtk.main() тормозит работу подпроцесса с октавией до своего завершения только после стого выпонсется октавис что за черт чего-то с свно не пойму :(

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #12 : 18 Июля 2006, 19:37:27 »
с идиот  :idiot2:
всего-то надо было добавлсть к командам для октавии символ перевода каретки \n :)

Оффлайн Nick Denry

  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
Re: вопросы по Python
« Ответ #13 : 19 Июля 2006, 00:08:45 »
>>всего-то надо было добавлсть
И не баг, а смешно (: LOL :)
Ubuntu world

Оффлайн archystar

  • Автор темы
  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: вопросы по Python
« Ответ #14 : 20 Июля 2006, 17:51:37 »
какой-то неприятный глюк - считываю из Octave строки все нормально считывается (через readline() ) но как-только доходит до конца берет и висит т.е. и результата нет и выхода из функции :(

 

Страница сгенерирована за 0.049 секунд. Запросов: 25.