Найти - Пользователи
Полная версия: Бесконечный вывод команды
Начало » Python для новичков » Бесконечный вывод команды
1
paraman
Более опытные коллеги, подскажите, как мне получить вывод. Что-то у меня косяк. Спасибо, что уделили моему вопросу своё время.

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
sanodin
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
paraman
Что–то Ваши примеры не работают.
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/
paraman
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/
Упс. Спасибо, что поправили. А по теме есть что сказаться!?
sanodin
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)
ничего сказать не могу , если не будет выводить ее , значит надо с ней разбираться
JOHN_16
paraman
просто размышляю без подтверждения кодом. Если вывод команды бесконечный, то read(), которая прочтет ВСЕ - никогда не выполнится так как у бесконечности нету символа конца, на то она и бесконечность. С другой стороны возможно стоит выводить построчно через readline() в теле цикла, или читать порциями по какому то либо размеру ( + таймер что бы не ждать неопределенного времени неизвестно какой длины вывод - смотреть в сторону таймеров в модуле signal)
Budulianin
paraman
Более опытные коллеги, подскажите, как мне получить вывод.
Ты понимаешь, что ты написал? Ты вывод команды в data записал

paraman

Вообще-то os.popen - deprecated c 2.6, используй subprocess.Popen

from subprocess import Popen, PIPE
result = Popen("ls", shell=True, stdout=PIPE)
print(result.stdout.read())
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB