Форум сайта python.su
1
Более опытные коллеги, подскажите, как мне получить вывод. Что-то у меня косяк. Спасибо, что уделили моему вопросу своё время.
import os f=os.popen("ngrep -d eth1 -q -W byline 'GET' | awk '/T /{ print $2 }'", 'rb', 0) data = f.read() while(data): data = f.read() print data
Отредактировано paraman (Дек. 2, 2013 07:38:28)
Офлайн
31
import os while True: f=os.popen("ping mail.ru") print f.read()
import os f=os.popen("ngrep -d eth1 -q -W byline 'GET' | awk '/T /{ print $2 }'", 'rb', 0) data = f.read() while(data): print data
Отредактировано sanodin (Дек. 2, 2013 09:04:18)
Офлайн
1
Что–то Ваши примеры не работают.
Офлайн
253
Безсконечный-> Бесконечный
http://slovari.yandex.ru/%D0%B1%D0%B5%D1%81%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE/ru-en/#lingvo/
Офлайн
1
doza_andУпс. Спасибо, что поправили. А по теме есть что сказаться!?
Безсконечный-> Бесконечныйhttp://slovari.yandex.ru/%D0%B1%D0%B5%D1%81%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE/ru-en/#lingvo/
Офлайн
31
import os while True: f=os.popen("ping -c 1 google.com") print f.readlines()[1]
("ngrep -d eth1 -q -W byline 'GET' | awk '/T /{ print $2 }'", 'rb', 0)
Отредактировано sanodin (Дек. 2, 2013 08:59:19)
Офлайн
221
paraman
просто размышляю без подтверждения кодом. Если вывод команды бесконечный, то read(), которая прочтет ВСЕ - никогда не выполнится так как у бесконечности нету символа конца, на то она и бесконечность. С другой стороны возможно стоит выводить построчно через readline() в теле цикла, или читать порциями по какому то либо размеру ( + таймер что бы не ждать неопределенного времени неизвестно какой длины вывод - смотреть в сторону таймеров в модуле signal)
Офлайн
33
paramanТы понимаешь, что ты написал? Ты вывод команды в data записал
Более опытные коллеги, подскажите, как мне получить вывод.
from subprocess import Popen, PIPE result = Popen("ls", shell=True, stdout=PIPE) print(result.stdout.read())
Отредактировано Budulianin (Дек. 2, 2013 13:33:32)
Офлайн