У меня просто была эта проблема. Вы по-прежнему можете использовать \r
даже в командной строке Windows, однако это только возвращает вас к предыдущему переводу строки (\n
).
Если вы делаете что-то вроде этого:
cnt = 0
print str(cnt)
while True:
cnt += 1
print "\r" + str(cnt)
Вы получите:
0
1
2
3
4
5
...
Это потому, что \r
возвращается только к последней строке. Поскольку вы уже написали символ новой строки в последнем операторе печати, курсор переместится от начала новой пустой строки к началу той же новой пустой строки.
Для иллюстрации, после того, как вы напечатаете первые 0, ваш курсор будет здесь:
0
| # <-- Cursor
Когда вы \r
, вы идете в начало строки. Но вы уже в начале строки.
Исправление состоит в том, чтобы избежать печати символа \n
, поэтому курсор находится на той же строке, а \r
правильно перезаписывает текст. Вы можете сделать это с помощью print 'text',
. Запятая предотвращает печать символа новой строки.
cnt = 0
print str(cnt),
while True:
cnt += 1
print "\r" + str(cnt),
Теперь он будет правильно переписывать строки.
Обратите внимание, что это Python 2.7, следовательно, операторы print
.