我正在尝试制作一个“假”装载栏,这只是一项小任务。我是编码的新手,这似乎有用,但似乎有很多代码。我认为可以由比我更有技巧的人在2行中完成。我很想知道如何将其重构为更有效的方式。任何帮助将不胜感激!
loading_bar = "LOADING\n[==========]"
print(loading_bar[0:10])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:11])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:12])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:13])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:14])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:15])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:16])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:17])
time.sleep(.300)
os.system('cls')
print(loading_bar[0:18])
time.sleep(.300)
os.system('cls')
print(loading_bar)
如果不是在正确的地方,我很抱歉。我也是StackOverflow的新手。
答案 0 :(得分:1)
有一个用于在终端显示进度的简洁库,名为tqdm
。用
$ pip install tqdm
示例脚本:
import time
from tqdm import tqdm
seconds = 10
for i in tqdm(range(seconds)):
time.sleep(1) # sleep one second in each iteration
运行脚本:
$ python spam.py
100%|██████████████████████████████| 10/10 [00:10<00:00, 1.00s/it]
tqdm
可高度自定义,请查看其PyPI page上提供的文档。在进度条前添加自定义消息的示例:
import time
from tqdm import tqdm
for i in tqdm(range(10), desc='LOADING'):
time.sleep(1)
输出:
$ python spam.py
LOADING: 100%|█████████████████████| 10/10 [00:10<00:00, 1.00s/it]
答案 1 :(得分:0)
我会这样做 -
import sys
import time
loading= "LOADING\n"
bar = "[==========]"
print(loading)
for c in bar:
time.sleep(0.3)
sys.stdout.write(c)
sys.stdout.flush()
解释:对于字符串栏中的每个字符c,for c in bar
循环表示&#34;&#34;。在打印每个字符之前,延迟就像在代码中一样。然后我使用sys.stdout.write
代替print
来避免打印换行符。 sys.stdout.flush()
表示立即将输出打印到终端上,否则将保留在缓冲区中。您可以将缓冲区想象成一个内部变量,我们可以使用print
或sys.stdout.write
继续追加该变量。关于它的更多信息here
如果您需要帮助,请了解其他任何内容,请随时发表评论:)