Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 1, 2013 22:14:47

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

Более опытные коллеги, подскажите, как мне получить вывод. Что-то у меня косяк. Спасибо, что уделили моему вопросу своё время.

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)

Офлайн

#2 Дек. 1, 2013 22:38:51

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

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)

Офлайн

#3 Дек. 2, 2013 06:52:28

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

Что–то Ваши примеры не работают.

Офлайн

#4 Дек. 2, 2013 07:32:46

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

Офлайн

#5 Дек. 2, 2013 07:39:26

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

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/
Упс. Спасибо, что поправили. А по теме есть что сказаться!?

Офлайн

#6 Дек. 2, 2013 08:40:52

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

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)

Офлайн

#7 Дек. 2, 2013 11:01:47

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

paraman
просто размышляю без подтверждения кодом. Если вывод команды бесконечный, то read(), которая прочтет ВСЕ - никогда не выполнится так как у бесконечности нету символа конца, на то она и бесконечность. С другой стороны возможно стоит выводить построчно через readline() в теле цикла, или читать порциями по какому то либо размеру ( + таймер что бы не ждать неопределенного времени неизвестно какой длины вывод - смотреть в сторону таймеров в модуле signal)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Дек. 2, 2013 13:28:48

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Бесконечный вывод команды

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())



Отредактировано Budulianin (Дек. 2, 2013 13:33:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version