2017-01-15 3 views
0

Что я пытаюсь код довольно прост:печати обновление переменной в одной и той же линии

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

Пример:

for i in range(0,2000): 
    print 'number is %d', %i 

Неправильный результат:

number is 0 
number is 1 
number is 2 
number is 3 
number is 4 
number is 5 
number is 6 
... 
... 

Что я хочу:

number is 0 

На второй итерации:

number is 1 `(it will replace 0 and I don't want the previous 0 anymore).` 

Это будет что-то вроде обновления процента чего-то только в одной строке.

Существует ли для него функция в Python?

+0

FYI: вы используете # для написания комментариев в python –

ответ

1

Это будет делать трюк, и обновлять каждый 1 второй:

import sys 
import time 

for i in range(0,2000): 
    sys.stdout.write('\rnumber is %d' %i) 
    sys.stdout.flush() 
    time.sleep(1) 
0

То, что вы хотите, называется Carriage Return или \r

Использование:

for i in range(0,2000): 
    print "number is %d  \r" %i, 

Пространства будет держать строка очищена от предыдущего вывода.

0

Вы можете попробовать что-нибудь от this поток при очистке терминала или что-то такое, что fuglede отправлено как дублируемое.

Следующий код работал отлично для меня в Mac, но если вы удалите time.sleep(), он будет работать так быстро, что вы даже не увидите отпечатки.

import time, sys 

for i in range(0, 20): 
    print 'Number is: %d' % i 
    time.sleep(.1) 
    sys.stderr.write("\x1b[2J\x1b[H") 
Смежные вопросы