轉自:一行數據
閱讀文本大概需要 3 分鐘
你的代碼進度還剩多少?
今天給大家介紹下目前6種比較常用的進度條,讓大家都能直觀地看到腳本運行最新的進展情況。
- 1.普通進度條
- 2.帶時間進度條
- 3.tpdm進度條
- 4.progress進度條
- 5.alive_progress進度條
- 6.可視化進度條
1.普通進度條
在代碼迭代運行中可以自己進行統計計算,并使用格式化字符串輸出代碼運行進度。
import?sysimport?timedef?progress_bar():????for?i?in?range(1,?101):????????print("",?end="")????????print("Download?progress:?{}%:?".format(i),?"▋"?*?(i?//?2),?end="")????????sys.stdout.flush()????????time.sleep(0.05)progress_bar()

進度條1
2.帶時間進度條
導入time模塊來計算代碼運行的時間,加上代碼迭代進度使用格式化字符串來輸出代碼運行進度。
import?timescale?=?50print("執行開始,祈禱不報錯".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("{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end?=?"")????time.sleep(0.1)print(""+"執行結束,萬幸".center(scale?//?2,"-"))

進度條2
3.tpdm進度條
這是一個專門生成進度條的工具包,可以使用pip在終端進行下載,當然還能切換進度條風格。
from?time?import?sleepfrom?tqdm?import?tqdm#?這里同樣的,tqdm就是這個進度條最常用的一個方法#?里面存一個可迭代對象for?i?in?tqdm(range(1,?500)):???#?模擬你的任務???sleep(0.01)sleep(0.5)

相關文檔:https://tqdm.github.io/
4.progress進度條
你只需要定義迭代的次數、進度條類型并在每次迭代時告知進度條即可,具體代碼案例如下
import?timefrom?progress.bar?import?IncrementalBarmylist?=?[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_baritems?=?range(100)??????????????????#?retrieve?your?set?of?itemswith?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?sgimport?timemylist?=?[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)

感謝閱讀
