我想知道是否可以删除用Python打印的项目 - 不是从Python GUI,而是从命令提示符。 e.g。
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..."
。这很难描述。
p.s我试过使用Backspace字符,但它似乎不起作用("\b"
)
由于
答案 0 :(得分:114)
只需使用CR即可开始行。
import time
for x in range (0,5):
b = "Loading" + "." * x
print (b, end="\r")
time.sleep(1)
答案 1 :(得分:90)
一种方法是使用ANSI escape sequences:
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
答案 2 :(得分:18)
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)
,具体取决于您正在进行打印的控制台,以便在请求时打印结果而不进行任何缓冲。