Ответ 1
Просто используйте CR, чтобы перейти к началу строки.
import time
for x in range (0,5):
b = "Loading" + "." * x
print (b, end="\r")
time.sleep(1)
[Использование Python 3.2] Мне было интересно, можно ли удалить элементы, которые вы напечатали в python, а не из python gui, но из команды propt. например.
a = 0
for x in range (0,3):
a = a + 1
b = ("Loading" + "." * a)
print (a)
чтобы он печатал
>>>Loading
>>>Loading.
>>>Loading..
>>>Loading...
Но, Моя проблема в том, что я хочу, чтобы все это было на одной линии, и для этого она удаляет ее, когда что-то еще приходит. поэтому вместо того, чтобы идти, "загружать", "загружать". "loa.... Я хочу, чтобы он получил" Загрузка ". Затем он удаляет то, что находится на линии, и заменяет его" Загрузка.. ", а затем удаляет" Загрузка.. "и заменяет его (в той же строке) на" Загрузка...". Его трудно описать.
p.s Я попытался использовать шаблон Backspace, но он не работает ( "\ b" )
Спасибо
Просто используйте CR, чтобы перейти к началу строки.
import time
for x in range (0,5):
b = "Loading" + "." * x
print (b, end="\r")
time.sleep(1)
Один из способов - использовать ANSI escape-последовательности:
import sys
import time
for i in range(10):
print("Loading" + "." * i)
sys.stdout.write("\033[F") # Cursor up one line
time.sleep(1)
Также иногда полезно (например, если вы печатаете что-то короче, чем раньше):
sys.stdout.write("\033[K") # Clear to the end of line
import sys
import time
a = 0
for x in range (0,3):
a = a + 1
b = ("Loading" + "." * a)
# \r prints a carriage return first, so `b` is printed on top of the previous line.
sys.stdout.write('\r'+b)
time.sleep(0.5)
print (a)
Обратите внимание, что вам может потребоваться запустить sys.stdout.flush()
сразу после sys.stdout.write('\r'+b)
, в зависимости от того, какая консоль вы выполняете печать, чтобы результаты были распечатаны по запросу без какой-либо буферизации.