問題描述
在python 3中動態打印一行 (Printing a line dynamically in python 3)
我正在嘗試在 python 3 中打印一行,該行會隨著程序的進行而改變。例如,如果我嘗試:
import time
for i in range(0,10):
print('Loading' + '.'*i)
time.sleep(0.5)
我得到:
Loading.
Loading..
Loading...
等等。我可以讓它改變前一行並得到另一個'。添加到它而不是打印一個新的?當然,我可以這樣做:
import time, os
for i in range(0,10):
os.system('cls')
print('Loading' + '.'*i)
time.sleep(0.5)
但這會導致其自身的問題。我知道以前有人問過這個問題,但是由於某種原因給出的所有答案都不起作用。做類似的事情:
import time
for i in range(0,10):
print('Loading' + '.'*i, end="\r")
time.sleep(0.5)
不會改變任何東西,用“”替換“\r”只會讓python暫時不打印任何東西,然後打印出整行。我做錯了什麼?
參考解法
方法 1:
import time
print('Loading', end='.')
for i in range(0,10):
print('', end=".")
time.sleep(0.5)
see explanation of end syntax and working example.
方法 2:
You can use a carriage return \r
to rewrite the current line like this:
import time
for i in range(50):
print("Loading" + "."*i, end="\r")
time.sleep(0.1)
方法 3:
You could use the ANSI clear screen escape character as
print(chr(27) + "[2J")
(by Vladimir Shevyakov、Paul Gowder、Felk、fcortes)