天天看點

Python 制作進度條,原來有這麼多方法!

歡迎關注 ,專注Python、資料分析、資料挖掘、好玩工具!

如果你之前沒用過進度條,八成是覺得它會增加不必要的複雜性或者很難維護,其實不然。要加一個進度條其實隻需要幾行代碼。在這幾行代碼中,我們可以看看如何在指令行腳本以及 PySimpleGUI UI 中添加進度條。

下文将介紹 4 個常用的 Python 進度條庫。

1、Progress

第一個要介紹的 Python 庫是 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()
      

Progress 支援多種類型的進度條,如下所示:

Python 制作進度條,原來有這麼多方法!

2、tqdm

下面我們看一下 tqdm 庫。

和之前見過的庫差不多,這兩行代碼也非常相似,在設定方面有一點點不同:

import timefrom tqdm 
import tqdmmylist = [1,2,3,4,5,6,7,8]
for i in tqdm(mylist): 
  time.sleep(1)
      

tqdm 實作的進度條效果如下:

Python 制作進度條,原來有這麼多方法!
Python 制作進度條,原來有這麼多方法!

這個進度條也提供了幾種選項。

相關文檔:https://tqdm.github.io/

3、Alive Progress

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

從代碼角度來說比較相似:

from alive_progress import alive_barimport 
timemylist = [1,2,3,4,5,6,7,8]
with alive_bar(len(mylist)) as bar: 
  for i in mylist: 
    bar() 
    time.sleep(1)
      

進度條的外觀和預期差不多:

Python 制作進度條,原來有這麼多方法!
Python 制作進度條,原來有這麼多方法!

這種進度條有一些與衆不同的功能,使用起來會比較有趣,功能詳情可見項目:https://github.com/rsalmei/alive-progress

4、PySimpleGUI

用 PySimpleGUI 得到圖形化進度條

我們可以加一行簡單的代碼,在指令行腳本中得到圖形化進度條。

Python 制作進度條,原來有這麼多方法!
Python 制作進度條,原來有這麼多方法!

為了實作上述内容,我們需要的代碼是:

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)
      

PySimpleGUI 應用程式中的進度條項目作者之前曾經在 GitHub 上讨論過「如何快速啟動 Python UI,然後使用 UI 建立比較工具」。在這個項目裡,作者還讨論了一下如何內建進度條。

Python 制作進度條,原來有這麼多方法!
Python 制作進度條,原來有這麼多方法!

代碼如下:

import PySimpleGUI as sgimport 
timemylist = [1,2,3,4,5,6,7,8]
progressbar = [ [sg.ProgressBar(len(mylist), orientation= h , size=(51, 10), key= progressbar )]]
outputwin = [ [sg.Output(size=(78,20))]]
layout = [ [sg.Frame( Progress ,layout= progressbar)], [sg.Frame( Output , layout = outputwin)], [sg.Submit( Start ),sg.Cancel()]]
window = sg.Window( Custom Progress Meter , layout)
progress_bar = window[ progressbar ] while True: 
  event, values = window.read(timeout=10) 
  if event ==  Cancel  or event is None: 
    break 
  elif event ==  Start : 
    for i,item in enumerate(mylist): 
      print(item) 
      time.sleep(1) 
      progress_bar.UpdateBar(i + 1)window.close()
      

沒錯,在 Python 腳本中使用進度條隻需要幾行代碼,一點也不複雜。有了進度條,以後也不用再猜測腳本運作地怎麼樣了。

技術交流

歡迎轉載、收藏、有所收獲點贊支援一下!

Python 制作進度條,原來有這麼多方法!
微信搜尋公衆号:Python學習與資料挖掘