Вопросики по Питону под Завром.

КПК с Linux, установка Linux на iPaq и другие модели, программы
Закрыто
Аватара пользователя
Serge_RUS
Академик (6 lvl)
Сообщения: 1134
Зарегистрирован: Вс мар 13, 2005 20:00

Вопросики по Питону под Завром.

Сообщение Serge_RUS » Ср авг 16, 2006 16:10

1. Хочу написать пару фронт-ендов к консольным прогам. (напр obexpush :)). Интересует, каким образом можно вызвать консольную прогу из-под питона и получить доступ к тому, что она пишит в консоли? Я нюб, типа :)

Пока один вопрос... :D
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux

Аватара пользователя
DMych
Доктор (4 lvl)
Сообщения: 435
Зарегистрирован: Пн июл 28, 2003 10:20

Сообщение DMych » Ср авг 16, 2006 17:15

Как обычно, используя функции popen, popen2, popen3 или popen4 из модуля os:

Код: Выделить всё

>>> import os
>>> fout = os.popen('ls *.txt')
>>> fout.readlines()
RTFM: http://docs.python.org/lib/os-newstream ... newstreams ;)
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a

Аватара пользователя
Serge_RUS
Академик (6 lvl)
Сообщения: 1134
Зарегистрирован: Вс мар 13, 2005 20:00

Сообщение Serge_RUS » Ср авг 16, 2006 22:22

Thanx! Если ещё вопросы будут, то буду писать сюда. :)
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux

Аватара пользователя
Serge_RUS
Академик (6 lvl)
Сообщения: 1134
Зарегистрирован: Вс мар 13, 2005 20:00

Сообщение Serge_RUS » Пн авг 28, 2006 16:21

Хм.. Пишу фронт-енд к wget. Что-то не получается. Когда я делаю fout = os.popen('wget somefile'), то он сразу начинает показыветь результат, тем самым, когда я вызываю fout.readlines(), то ответ: ['']. Но с командой hcitool scan проходит. Странно. Что делать?
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux

Аватара пользователя
Strijar
Кандидат (3 lvl)
Сообщения: 181
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Strijar » Пн авг 28, 2006 16:41

Serge_RUS писал(а):Когда я делаю fout = os.popen('wget somefile'), то он сразу начинает показыветь результат
Скорей всего они пишет не в stdout а в stderr - надо или перенапрявлять вывод (wget file 2>&1) или открывать stderr (файловый дескриптор 2, а не 1)
Sharp Zaurus SL-C760 (pdaXrom RC9) + WiFi ASUS WL-110
Visor Platinum (PalmOS 3.5)

Аватара пользователя
DMych
Доктор (4 lvl)
Сообщения: 435
Зарегистрирован: Пн июл 28, 2003 10:20

Сообщение DMych » Пн авг 28, 2006 17:11

скорее всего он пишет в stderr. попробуй popen3 (кажется так)
это более правильно, чем использовать перенаправление в строке команды, ИМХО.
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a

Аватара пользователя
Strijar
Кандидат (3 lvl)
Сообщения: 181
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Strijar » Чт авг 31, 2006 12:57

DMych писал(а): это более правильно, чем использовать перенаправление в строке команды, ИМХО.
А вот не факт - он может писать И в stdout И в stderr ;)
Sharp Zaurus SL-C760 (pdaXrom RC9) + WiFi ASUS WL-110
Visor Platinum (PalmOS 3.5)

Аватара пользователя
Serge_RUS
Академик (6 lvl)
Сообщения: 1134
Зарегистрирован: Вс мар 13, 2005 20:00

Сообщение Serge_RUS » Чт авг 31, 2006 13:41

В любом случае есть проблемы... Например: пока выполняется f.read() программа зависает и не отображает статус загрузки wget'а. Хотя должна выводит в кутопийное текстовое поле.
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux

Аватара пользователя
DMych
Доктор (4 lvl)
Сообщения: 435
Зарегистрирован: Пн июл 28, 2003 10:20

Сообщение DMych » Чт авг 31, 2006 15:29

Strijar писал(а):А вот не факт - он может писать И в stdout И в stderr ;)
И что? Читаем документацию:
popen3( cmd[, mode[, bufsize]])
Executes cmd as a sub-process. Returns the file objects (child_stdin, child_stdout, child_stderr). Availability: Macintosh, Unix, Windows. New in version 2.0.
Т.о., (fin, fout, ferr) = os.popen3('...') - имеем три файловых объекта, через один из которых можем передавать данные в подпроцесс, и два - из которых читам соотв. stdout и sdterr подпроцесса.

Serge_RUS писал(а):В любом случае есть проблемы... Например: пока выполняется f.read() программа зависает и не отображает статус загрузки wget'а. Хотя должна выводит в кутопийное текстовое поле.
А что мешает использовать f.readlines() в цикле? Или ограничивать каждый read некоторым количеством байт, например, f.read(1024)? Первый вариант лучше подходит для текстовых данных.
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a

Аватара пользователя
Serge_RUS
Академик (6 lvl)
Сообщения: 1134
Зарегистрирован: Вс мар 13, 2005 20:00

Сообщение Serge_RUS » Чт авг 31, 2006 17:23

Хм... А как тогда реализовать дозапихивание инфы в мультилайновое текстовое поле :)?
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux

Аватара пользователя
DMych
Доктор (4 lvl)
Сообщения: 435
Зарегистрирован: Пн июл 28, 2003 10:20

Сообщение DMych » Пт сен 01, 2006 16:36

Serge_RUS писал(а):Хм... А как тогда реализовать дозапихивание инфы в мультилайновое текстовое поле :)?
ммм... может, все-таки, документацию почитать? ;)

вот это: http://doc.trolltech.com/2.3/qmultilineedit.html#e13115 я нашел за 30-35 секунд...
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a

Аватара пользователя
Serge_RUS
Академик (6 lvl)
Сообщения: 1134
Зарегистрирован: Вс мар 13, 2005 20:00

Сообщение Serge_RUS » Пт сен 01, 2006 18:00

Дока... Енглиш бы знать ;)!
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux

Аватара пользователя
DMych
Доктор (4 lvl)
Сообщения: 435
Зарегистрирован: Пн июл 28, 2003 10:20

Сообщение DMych » Пн сен 04, 2006 14:43

Serge_RUS писал(а):Дока... Енглиш бы знать ;)!
Ну, сорри. Я не могу все время выступать переводчиком.
Купи книжку по Питону на русском... Их щас много.
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a

Аватара пользователя
Serge_RUS
Академик (6 lvl)
Сообщения: 1134
Зарегистрирован: Вс мар 13, 2005 20:00

Сообщение Serge_RUS » Пн сен 04, 2006 23:56

большое спасибо и за это...
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux

Аватара пользователя
DMych
Доктор (4 lvl)
Сообщения: 435
Зарегистрирован: Пн июл 28, 2003 10:20

Сообщение DMych » Ср сен 06, 2006 10:18

пожалуйста. :)
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a

Закрыто

Вернуться в «КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее»