Подтвердить что ты не робот

Python: печать с использованием возврата каретки и запятой не работает

Мне нужно распечатать одну строку в цикле (Python 3.x). Оглядываясь на SO уже, я помещаю эту строку в свой код:

print('{0} imported\r'.format(tot),)

Тем не менее, он по-прежнему печатает несколько строк при прошивке. Я также пробовал

sys.stdout.write('{0} imported\r'.format(tot))

но это не выводит ничего на консоль...

Кто-нибудь знает, что происходит с этим?

4b9b3361

Ответ 1

В первом случае некоторые системы будут рассматривать \r как новую строку. Во втором случае вы не flush линии. Попробуйте следующее:

sys.stdout.write('{0} imported\r'.format(tot))
sys.stdout.flush()

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

Ответ 2

Если вы хотите перезаписать свою последнюю строку, вам нужно добавить \r (возврат символа) и end = "", чтобы вы не переходили к следующей строке.

values = range(0, 100)
for i in values:
    print ("\rComplete: ", i, "%", end="")
print ("\rComplete: 100%")

Ответ 3

Я предпочитаю использовать решение Jan, но таким образом:

values = range(0, 101)
for i in values:
  print ("Complete: ", i, "%", end="\r")
print ("\n\r", end="")