1. 程式人生 > 實用技巧 >Python 實現進度條的六種方式

Python 實現進度條的六種方式

一、普通進度條

示例程式碼

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)

if __name__ == '__main__':
    progress_bar()

展現形式

二、帶時間的進度條

  匯入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,"-"))

展現形式

 

三、TPDM進度條

  這是一個專門生成進度條的工具包,可以使用pip在終端進行下載,當然還能切換進度條風格

示例程式碼

from time import sleep
from tqdm import tqdm
# 這裡同樣的,tqdm就是這個進度條最常用的一個方法 # 裡面存一個可迭代物件 for i in tqdm(range(1, 500)): # 模擬你的任務 sleep(0.01) sleep(
0.5)

展現形式

四、progress進度條

  只需要定義迭代的次數、進度條型別並在每次迭代時告知進度條即可

相關文件:https://pypi.org/project/progress/1.5/

示例程式碼

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()

展現形式

五、alive_progress 進度條

  顧名思義,這個庫可以使得進度條變得生動起來,它比原來我們見過的進度條多了一些動畫效果,需要使用pip進行下載

相關文件:https://github.com/rsalmei/alive-progress

示例程式碼

from alive_progress import alive_bar

# retrieve your set of items
items = range(100)             

# declare your expected total     
with alive_bar(len(items)) as bar:   
    # iterate as usual
    for item in items:               
        # process each item
        bar()
        time.sleep(0.1)

展現形式

六、視覺化進度條

  用 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)

展現形式

參考:https://mp.weixin.qq.com/s?__biz=MzI0OTc0MzAwNA==&mid=2247489771&idx=2&sn=ca8071edd84ab418e168770a9d6b957b&chksm=e98d8b18defa020ed004f27ed1d13d4c34f09605a04d77823e3efb627cf0e303726d4e84d942