Найти - Пользователи
Полная версия: Отлов вывода.
Начало » Python для новичков » Отлов вывода.
1
locb
Всем привет! Тема может показаться избитой. Собственно отлов вывода из консоли.
Нетривиальность заключается в следующем. Через субпроцесс не проблема вытащить вывод и обработать после завершения процесса. Однако проблема возникает при обработке вывода незавешённой программы. Для примера, это худо-бедно работает
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, поэтому на ней и тестил.
Пожалуйста, подскажите, как правильно отлавливать вывод на лету в данной ситуации.
ZerG
может имеет смысл юзать не тор ? а какнить рs ?
JOHN_16
ZerG
Читайте внимательнее посты. Тут тор просто для примера взят, опрашиваемая программа другая.
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