重构假装载栏?

时间:2018-03-01 12:40:36

标签: python python-3.x

我正在尝试制作一个“假”装载栏,这只是一项小任务。我是编码的新手,这似乎有用,但似乎有很多代码。我认为可以由比我更有技巧的人在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的新手。

2 个答案:

答案 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()表示立即将输出打印到终端上,否则将保留在缓冲区中。您可以将缓冲区想象成一个内部变量,我们可以使用printsys.stdout.write继续追加该变量。关于它的更多信息here

如果您需要帮助,请了解其他任何内容,请随时发表评论:)