Python制作進(jìn)度條的四種方法總結(jié)
如果你之前沒用過進(jìn)度條,八成是覺得它會(huì)增加不必要的復(fù)雜性或者很難維護(hù),其實(shí)不然。要加一個(gè)進(jìn)度條其實(shí)只需要幾行代碼。
在這幾行代碼中,我們可以看看如何在命令行腳本以及 PySimpleGUI UI 中添加進(jìn)度條。
下文將介紹 4 個(gè)常用的 Python 進(jìn)度條庫:
Progress
第一個(gè)要介紹的 Python 庫是 Progress。
你只需要定義迭代的次數(shù)、進(jìn)度條類型并在每次迭代時(shí)告知進(jìn)度條。
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 實(shí)現(xiàn)的進(jìn)度條效果如下:
Progressbar 的增量進(jìn)度條
如果你不喜歡該進(jìn)度條的格式,還可以從以下格式中挑選:
ProgressBar 支持的進(jìn)度條類型。
相關(guān)文檔:https://pypi.org/project/progress/1.5/
tqdm
下面我們看一下 tqdm 庫。
和之前見過的庫差不多,這兩行代碼也非常相似,在設(shè)置方面有一點(diǎn)點(diǎn)不同:
import?timefrom?tqdm? import?tqdmmylist?=?[1,2,3,4,5,6,7,8] for?i?in?tqdm(mylist):? ??time.sleep(1)
tqdm 實(shí)現(xiàn)的進(jìn)度條效果如下:
這個(gè)進(jìn)度條也提供了幾種選項(xiàng)。
相關(guān)文檔:https://tqdm.github.io/
Alive Progress
顧名思義,這個(gè)庫可以使得進(jìn)度條變得生動(dòng)起來,它比原來我們見過的進(jìn)度條多了一些動(dòng)畫效果。
從代碼角度來說比較相似:
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)
進(jìn)度條的外觀和預(yù)期差不多:
這種進(jìn)度條有一些與眾不同的功能,使用起來會(huì)比較有趣,功能詳情可見項(xiàng)目:https://github.com/rsalmei/alive-progress
PySimpleGUI
用 PySimpleGUI 得到圖形化進(jìn)度條
我們可以加一行簡(jiǎn)單的代碼,在命令行腳本中得到圖形化進(jìn)度條。
為了實(shí)現(xiàn)上述內(nèi)容,我們需要的代碼是:
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 應(yīng)用程序中的進(jìn)度條項(xiàng)目作者之前曾經(jīng)在 GitHub 上討論過「如何快速啟動(dòng) Python UI,然后使用 UI 創(chuàng)建比較工具」。
在這個(gè)項(xiàng)目里,作者還討論了一下如何集成進(jìn)度條。
代碼如下:
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()
沒錯(cuò),在 Python 腳本中使用進(jìn)度條只需要幾行代碼,一點(diǎn)也不復(fù)雜。有了進(jìn)度條,以后也不用再猜測(cè)腳本運(yùn)行的怎么樣了。
到此這篇關(guān)于Python制作進(jìn)度條的四種方法總結(jié)的文章就介紹到這了,更多相關(guān)Python制作進(jìn)度條內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解讀Opencv中Filter2D函數(shù)的補(bǔ)全方式
這篇文章主要介紹了解讀Opencv中Filter2D函數(shù)的補(bǔ)全方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12TensorFlow的自動(dòng)求導(dǎo)原理分析
這篇文章主要介紹了TensorFlow的自動(dòng)求導(dǎo)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python 人工智能老照片修復(fù)算法學(xué)習(xí)
老舊或者破損的照片如何修復(fù)呢?本文主要介紹了一個(gè)非常不錯(cuò)的照片恢復(fù)開源項(xiàng)目:Bringing-Old-Photos-Back-to-Life。感興趣的小伙伴快來看看呀2021-11-11python編程學(xué)習(xí)np.float 被刪除的問題解析
這篇文章主要為大家介紹了python編程學(xué)習(xí)np.float 被刪除的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02anaconda中安裝的python環(huán)境中沒有pip3的問題及解決
這篇文章主要介紹了anaconda中安裝的python環(huán)境中沒有pip3的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python機(jī)器學(xué)習(xí)入門(六)之Python優(yōu)化模型
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Python Pandas list列表數(shù)據(jù)列拆分成多行的方法實(shí)現(xiàn)
這篇文章主要介紹了Python Pandas list(列表)數(shù)據(jù)列拆分成多行的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12