六種酷炫Python執行進度條
阿新 • • 發佈:2020-07-17
本文介紹了目前6種比較常用的進度條,讓大家都能直觀地看到指令碼執行最新的進展情況
很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:1097524789
-
1.普通進度條
-
2.帶時間進度條
-
3.tpdm進度條
-
4.progress進度條
-
5.alive_progress進度條
-
6.視覺化進度條
-
7.進度條?
1.普通進度條
在程式碼迭代執行中可以自己進行統計計算,並使用格式化字串輸出程式碼執行進度
import sys
import time
def progress_bar():
for i in range(1, 101):
print("\r", end="")
print("Download progress: {}%: ".format(i), "▋" * (i // 2), end="")
sys.stdout.flush()
time.sleep(0.05)
progress_bar()
進度條1
2.帶時間進度條
匯入time模組來計算程式碼執行的時間,加上程式碼迭代進度使用格式化字串來輸出程式碼執行進度
import time
scale = 50
print("執行開始,祈禱不報錯".center(scale // 2,"-"))
start = time.perf_counter()
for i in range(scale + 1):
a = "*" * i
b = "." * (scale - i)
c = (i / scale) * 100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end = "")
time.sleep(0.1)
print("\n"+"執行結束,萬幸".center(scale // 2,"-"))
進度條2
3.tpdm進度條
這是一個專門生成進度條的工具包,可以使用pip在終端進行下載,當然還能切換進度條風格
from time import sleep
from tqdm import tqdm
# 這裡同樣的,tqdm就是這個進度條最常用的一個方法
# 裡面存一個可迭代物件
for i in tqdm(range(1, 500)):
# 模擬你的任務
sleep(0.01)
sleep(0.5)
相關文件:https://tqdm.github.io/
4.progress進度條
你只需要定義迭代的次數、進度條型別並在每次迭代時告知進度條即可,具體程式碼案例如下
import time
from progress.bar import IncrementalBar
mylist = [1,2,3,4,5,6,7,8]
bar = IncrementalBar('Countdown', max = len(mylist))
for item in mylist:
bar.next()
time.sleep(1)
bar.finish()
相關文件:https://pypi.org/project/progress/1.5/
5.alive_progress進度條
顧名思義,這個庫可以使得進度條變得生動起來,它比原來我們見過的進度條多了一些動畫效果,需要使用pip進行下載,程式碼案例如下:
from alive_progress import alive_bar
items = range(100) # retrieve your set of items
with alive_bar(len(items)) as bar: # declare your expected total
for item in items: # iterate as usual
# process each item
bar()
time.sleep(0.1)
相關文件:https://github.com/rsalmei/alive-progress
6.視覺化進度條
用 PySimpleGUI 得到圖形化進度條,我們可以加一行簡單的程式碼,在命令列指令碼中得到圖形化進度條,也是使用pip進行下載,程式碼案例如下
import PySimpleGUI as sg
import time
mylist = [1,2,3,4,5,6,7,8]
for i, item in enumerate(mylist):
sg.one_line_progress_meter('This is my progress meter!', i+1, len(mylist), '-key-')
time.sleep(1)