Как напечатать повторные строки в одной строке стандартного вывода (Windows cmd)? - PullRequest
2 голосов
/ 04 июня 2019

Я использую следующий код для отображения строки с процентом завершения цикла:

for x in range(y,z):
    completed = 100*(x-y)/(z-y)
    sys.stdout.write(f'{completed:10.0f}% completed.'
    sys.stdout.flush()

И я хочу, чтобы все строки отображались в одной строке окна cmd (более ранние значения удалены, а новые напечатаны в одном месте)

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

    x% completed.

Где значение x обновляется с каждой итерацией.

Но вывод, который я получаю, выглядит так:

    0% completed.         1% completed.         2% completed. ...etc

Из того, что я обнаружил, должно работать на других платформах, кроме Windows, но меня интересует решение для Windows.

1 Ответ

0 голосов
/ 04 июня 2019

добавьте \r в конце строки:

for x in range(y,z):
    completed = 100*(x-y)/(z-y)
    sys.stdout.write(f'{completed:10.0f}% completed.  \r'
    sys.stdout.flush()

, если у вас нет проблем с буферизацией, вы можете использовать print напрямую:

for x in range(y,z):
    completed = 100*(x-y)/(z-y)
    print(f'{completed:10.0f}% completed.  ', end='\r')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...