2016-03-08 3 views
0

В настоящее время я бег этогоПечати третья линия от нижней части в стандартном выводе

while p.poll() is None: 
    output = p.stdout.readline() 
    print output, 

Что происходит, все линии печатаются. Я ищу, чтобы печатать, обычно 3-я строка снизу, которая содержит данные о том, выполнена ли команда правильно или нет.

Кроме того, есть ли способ иметь как в строке состояния в нижней части, что обновления в реальном времени с помощью Tkinter этикетки

+0

магазин выходной в списке, печать только третий последний элемент списка (Indice -3 работает отлично) –

+0

также вы задаете два полностью отделяет вопросы с одной должности, оба из которых являются просто «как do i do ___ ", который предполагает, что вы не очень старались перед публикацией. –

+0

@ TadhgMcDonald-Jensen спасибо за отзыв, я не знал, что stdout можно перенести в список. –

ответ

1

решение, благодаря @ TadhgMcDonald-Jensen кончике

Для печати только третья последняя строка (Indice -3) в окне терминала оболочки

import Tkinter as * 
import subprocess 

out = [] # Create empty list 
for line in iter(p.stdout.readline, ''): 
    out.append(line.rstrip('\n')) # append list 
print out[-3] # print item in the list, in this case -3 

Или для отображения в метке TkInter

import Tkinter as * 
import subprocess 

out = [] # Create empty list 
for line in iter(p.stdout.readline, ''): 
    out.append(line.rstrip('\n')) # append list 
window = Tk() 
Label(window, text=out[-3]).grid(sticky=W) 
+0

для циклов, которые добавляются только в список, это целый причина [понимание списка] (https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions) существует: 'out = [line.rstrip ('\ n') для строки в iter (стр. stdout.readline, '')] ' –

Смежные вопросы