Уведомления

Группа в Telegram: @pythonsu

#1 Июль 12, 2016 12:09:50

locb
Зарегистрирован: 2016-07-12
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Отлов вывода.

Всем привет! Тема может показаться избитой. Собственно отлов вывода из консоли.
Нетривиальность заключается в следующем. Через субпроцесс не проблема вытащить вывод и обработать после завершения процесса. Однако проблема возникает при обработке вывода незавешённой программы. Для примера, это худо-бедно работает
OS Linux

from subprocess import Popen, PIPE, STDOUT
import time
import threading
answer = []
def set():
	global answer
	p = Popen(['top'], stdout = PIPE, 
		stderr = STDOUT, shell = True)
	for line in p.stdout:
		answer.append(line.replace('\n', ''))
	exit(0)
threading.Thread(target=set, name="p1").start()	
while True:
	time.sleep(2)
	for l in answer:
		print l
	answer=[]
Поскольку top не завершается до соответствующей команды пользователя, то запись в буфер продолжается и всё норм в принципе. Однако команда xl top себя в иначе, буфер пустой и всё летит в труху.
Поясню, на всякий случай, xl top выводит статы загруженности виртуальных доменов Xen и испрользует принцип вывода аналогичный top, поэтому на ней и тестил.
Пожалуйста, подскажите, как правильно отлавливать вывод на лету в данной ситуации.

Офлайн

#2 Июль 12, 2016 13:56:05

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Отлов вывода.

может имеет смысл юзать не тор ? а какнить рs ?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Июль 12, 2016 14:04:32

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

Отлов вывода.

ZerG
Читайте внимательнее посты. Тут тор просто для примера взят, опрашиваемая программа другая.



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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version