Python печатать на ту же строку во время цикла - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть следующий цикл, который печатает период после каждой итерации:

for i in range(3):
    time.sleep(1)
    print('.')

Это выполняется точно так, как ожидается: период выводится на терминал в новой строке с шагом 1 секунда

.  # after 1 seconds
.  # after 2 seconds
.  # after 3 seconds

Я хочу изменить вывод для периодов печати на одну и ту же строку (чтобы вывод был более компактным и более легким для чтения).Однако у меня возникает проблема, когда я изменяю код следующим образом:

for i in range(3):
    time.sleep(1)
    print('.', end='')

В этом случае одна строка периодов печатается только сразу после завершения цикла for:

...  # all after 3 seconds

Я что-то не так делаю здесь или есть ограничение в выражении python print?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Здесь это вам поможет:

import time

for i in range(3):
    time.sleep(1)
    print(".", end="", flush=True)
print("")

Редактировать

Если вы используете python2, обязательно добавьте

from __future__ import print_function

как первое утверждение к вашему сценарию.

0 голосов
/ 16 ноября 2018

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

Можно принудительно отобразить частичные строки, добавив flush=True к вызову печати. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...