我以前看过这个,但我似乎无法让它发挥作用。
这是我所拥有的最好的,但如果我希望它出现在包含其他信息的屏幕上,它就无法运作:
timer = 0
loading = "Loading: [----------]"
while timer < 11:
os.system('clear')
print loading
loading = loading.replace("-","=",1)
time.sleep(1)
timer += 1
time.sleep(1)
os.system('clear')
print loading+" Complete!"
我更喜欢一种适用于Windows和Linux的方法,不需要一个没有库存的模块(所以我可以给其他人这个有windows或linux的程序,让它工作正常)
如果不是那样还可以。我总能有一个&#34;依赖&#34;列表。
先谢谢了。 :)
答案 0 :(得分:1)
诀窍是跳过在消息末尾写一个新行并使用退格键清除下一轮。使用带有flush的sys.stdout来跳过新行,并使用与要清除的消息一样多的退格:
import os
import sys
import time
timer = 0
loading = "Loading: [----------]"
backtrack = '\b'*len(loading)
while timer < 11:
sys.stdout.write(backtrack + loading)
sys.stdout.flush()
loading = loading.replace("-","=",1)
time.sleep(1)
timer += 1
time.sleep(1)
sys.stdout.write(backtrack)
print loading+" Complete!"
答案 1 :(得分:-1)
所以,感谢martineau的评论,我能够做到这一点:
import time,sys
loading = "Loading: [----------]"
for i in range(101):
time.sleep(0.1)
sys.stdout.write("\r"+loading+" %d%%" % i)
if i == 10 or i == 20 or i == 30 or i == 40 or i == 50 or i == 60 or i == 70 or i == 80 or i == 90 or i == 100:
loading = loading.replace("-","=",1)
sys.stdout.flush()