删除和替换打印的项目

我想知道是否有可能删除您在 Python 中打印的项目——不是从 Python GUI 中,而是从命令提示符中。 例如:。

a = 0
for x in range (0,3):
a = a + 1
b = ("Loading" + "." * a)
print (a)

所以它会打印出来

>>>Loading
>>>Loading.
>>>Loading..
>>>Loading...

但是,我的问题是,我希望这一切都在一行,因为它删除它自己时,其他东西出现了。因此,我希望它不打印 "Loading", "Loading.", "Loading...,而是打印 "Loading.",然后它删除行上的内容并用 "Loading.."替换,然后删除 "Loading.."并用 "Loading..."替换(在同一行上)。很难形容。

我尝试使用 Backspace 字符,但似乎不起作用("\b")

301425 次浏览

一种方法是使用 ANSI 转义序列:

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.write('\r'+b)之后立即运行 sys.stdout.flush(),这取决于您正在进行打印的控制台,以便在没有任何缓冲的情况下请求时打印结果。

只要使用 CR 转到行的开头。

import time
for x in range (0,5):
b = "Loading" + "." * x
print (b, end="\r")
time.sleep(1)