Пока один вопрос...
Вопросики по Питону под Завром.
Вопросики по Питону под Завром.
1. Хочу написать пару фронт-ендов к консольным прогам. (напр obexpush
). Интересует, каким образом можно вызвать консольную прогу из-под питона и получить доступ к тому, что она пишит в консоли? Я нюб, типа 
Пока один вопрос...
Пока один вопрос...
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
Как обычно, используя функции popen, popen2, popen3 или popen4 из модуля os:
RTFM: http://docs.python.org/lib/os-newstream ... newstreams 
Код: Выделить всё
>>> import os
>>> fout = os.popen('ls *.txt')
>>> fout.readlines()
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a
Cacko 1.22a
Thanx! Если ещё вопросы будут, то буду писать сюда. 
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
Хм.. Пишу фронт-енд к 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
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
Скорей всего они пишет не в stdout а в stderr - надо или перенапрявлять вывод (wget file 2>&1) или открывать stderr (файловый дескриптор 2, а не 1)Serge_RUS писал(а):Когда я делаю fout = os.popen('wget somefile'), то он сразу начинает показыветь результат
Sharp Zaurus SL-C760 (pdaXrom RC9) + WiFi ASUS WL-110
Visor Platinum (PalmOS 3.5)
Visor Platinum (PalmOS 3.5)
В любом случае есть проблемы... Например: пока выполняется f.read() программа зависает и не отображает статус загрузки wget'а. Хотя должна выводит в кутопийное текстовое поле.
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
И что? Читаем документацию:Strijar писал(а):А вот не факт - он может писать И в stdout И в stderr
Т.о., (fin, fout, ferr) = os.popen3('...') - имеем три файловых объекта, через один из которых можем передавать данные в подпроцесс, и два - из которых читам соотв. stdout и sdterr подпроцесса.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.
А что мешает использовать f.readlines() в цикле? Или ограничивать каждый read некоторым количеством байт, например, f.read(1024)? Первый вариант лучше подходит для текстовых данных.Serge_RUS писал(а):В любом случае есть проблемы... Например: пока выполняется f.read() программа зависает и не отображает статус загрузки wget'а. Хотя должна выводит в кутопийное текстовое поле.
Zaurus SL-C860 + SD 1G + CF 512M + Bluetooth-GPRS
Cacko 1.22a
Cacko 1.22a
Хм... А как тогда реализовать дозапихивание инфы в мультилайновое текстовое поле
?
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
ммм... может, все-таки, документацию почитать?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
Cacko 1.22a
Дока... Енглиш бы знать
!
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
большое спасибо и за это...
"Проще потушить в себе пламя свечи, чем с помощью него
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux
зажечь другие сердца, создав Свет!" С. Лукъяненко.
Ubuntu 7.10 @ Eee PC 4G
JID: sugia-serge@jabber.ru
Moto A1200e
Ubuntu Linux