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

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

print('{0} importedr'.format(tot),)

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

sys.stdout.write('{0} importedr'.format(tot))

но это не для печати что-нибудь в консоли...

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

3 ответов


в первом случае, некоторые системы будут относиться к \r как строку. Во втором случае-нет!--2--> линии. Попробуйте это:

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

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


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

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

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

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