Python: как читать непрерывный вывод?

Опишу, что я хочу получить.
1) Если запустить какую либо программу(что то типа subprocess.popen), я могу прочитать ее вывод (stdout и код завершения). НО только после ее завершения. Это насколько я понял.

2) Есть программа, которая выполняется бесконечно(например tcpdump). Нужно как либо получить ее вывод. как это сделать?
  • Вопрос задан
  • 2920 просмотров
Решения вопроса 1
Nirail
@Nirail
Дайте мне повод и я во все решу
Можно как-то так:
Windows:
pipe.py:
import sys
while True:
	line = sys.stdin.readline()
	print(len(line))

вызов:
ping 8.8.8.8 -t | pipe.py
Для Linux аналогично.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@xandox
Ты можешь при создании subprocess.Popen указать stdout=subprocess.PIPE, тогда сможешь читать  из subprocess.Popen.stdout по мере поступления туда данных. Ну а код завершения, понятно, только после завершения.
про PIPE
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы