Ale*_*ex 85 python printing python-3.x python-3.2
我想知道是否有可能删除你用Python打印的项目 - 不是从Python GUI,而是从命令提示符.例如
a = 0
for x in range (0,3):
a = a + 1
b = ("Loading" + "." * a)
print (a)
Run Code Online (Sandbox Code Playgroud)
所以它打印
>>>Loading
>>>Loading.
>>>Loading..
>>>Loading...
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是我希望这一切都在一条线上,为此它会在其他东西出现时自行删除它.因此,不是打印"Loading", "Loading.", "Loading...
我希望它打印"Loading."
,然后它删除行上的内容并替换它,"Loading.."
然后删除"Loading.."
并替换它(在同一行)"Loading..."
.这很难描述.
ps我试图使用Backspace字符,但它似乎不起作用("\b"
)
谢谢
Kei*_*ith 135
只需使用CR即可开始行.
import time
for x in range (0,5):
b = "Loading" + "." * x
print (b, end="\r")
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
Sve*_*ach 98
一种方法是使用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)
Run Code Online (Sandbox Code Playgroud)
有时也很有用(例如,如果你打印比以前更短的东西):
sys.stdout.write("\033[K") # Clear to the end of line
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 21
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)
Run Code Online (Sandbox Code Playgroud)
请注意,您可能必须立即运行sys.stdout.flush()
,sys.stdout.write('\r'+b)
具体取决于您正在执行打印的控制台,以便在请求时打印结果而不进行任何缓冲.
归档时间: |
|
查看次数: |
153518 次 |
最近记录: |