2013-11-02 3 views
0

Как очистить/сохранить текущую строку в Python? У меня есть двойной цикл, который я хотел бы распечатать результаты внутреннего цикла в режиме онлайн и сохранить и показать окончательный результат этого цикла после того, как он будет обращаться к внешнему циклу каждый раз. У меня есть:Очистить, обновить и сохранить текущую строку

import os 
for j in xrange(1,final_step_j): 
    Result=0 
     for k in xrange(1,final_step_k): 
     Result=Result+ j*k 
     os.system('clear') 
     print "current Result for j=%s and k=%s is %s" %(j, k, Result) 

Какой os.system('clear') четко очистить всю страницу каждый раз, когда он запускает внутренний цикл. Я хочу сохранить и показать конечный результат внутреннего цикла каждый раз и перейти к новой строке, чтобы показать результат следующего раунда, в то время как предыдущая последняя строка все еще видна на экране.

+0

Вы можете сохранить строки в списке и распечатать все снова после ясного экрана. – furas

ответ

1

Это не идеально, но вы можете попробовать написать возврат каретки \r без новой линии через нижний уровень stdout метод:

import os 
import sys 

for j in xrange(1,final_step_j): 
    Result=0 
    for k in xrange(1,final_step_k): 
    Result=Result+ j*k 
    # Move back to beginning and print over 
    sys.stdout.write("\rcurrent Result for j=%s and k=%s is %s" %(j, k, Result)) 
    sys.stdout.flush() # Flush without a new line 
    print # Move to next line 

Проблема, если линия вы печатаете короче, чем один вы уже напечатали, и в этом случае вам нужно иметь больше дополнений или убедиться, что у вас есть постоянное количество дополнений.

Основано на this answer.

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