欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文教你用Python中progress庫實現(xiàn)進度條

 更新時間:2023年03月24日 15:36:51   作者:小斌哥ge  
這篇文章主要為大家詳細介紹了如何通過Python中的progress庫實現(xiàn)進度條的繪制,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

progress庫安裝和介紹

1.安裝progress庫

progress是Python第三方庫,在終端執(zhí)行 pip 命令安裝。

pip install progress

2.progress進度條效果展示

progress的pypi源地址為:https://pypi.org/project/progress/

在官網(wǎng)可以看到progress能實現(xiàn)的各種進度條效果,如下動圖。

progress實現(xiàn)進度條

# coding=utf-8
from progress.bar import Bar
import time

# 創(chuàng)建Bar類的實例
bar = Bar('MyProcess:', max=100)
# 循環(huán)處理某業(yè)務(wù),調(diào)用bar對象的next()方法,循環(huán)次數(shù)等于max
for _ in range(100):
	# Do some work
    time.sleep(0.05)
    bar.next()
# 循環(huán)完成后調(diào)用finish()方法
bar.finish()

運行效果:

使用 progress 庫實現(xiàn)進度條很簡單,從 progress 庫的 bar.py 中導(dǎo)入 Bar 類,實例化一個對象,然后循環(huán)處理業(yè)務(wù)和調(diào)用 next() 方法,處理完成后調(diào)用 finish() 方法結(jié)束進度條。

Bar 類的主要參數(shù)有:

  • message: 進度條顯示的信息,這個參數(shù)默認可以用位置參數(shù)傳給 Bar 。
  • width: 修改進度條的寬度,默認32。
  • max: 進度條被分成幾等份,如100。
  • suffix: 進度百分比顯示的格式,默認 ‘%(index)d/%(max)d’ 。
  • fill: 進度條用什么填充,默認’#’ 。
  • empty_fill: 未加載的進度條用什么填充,默認空格’ ’ 。
  • bar_prefix: 進度條前綴,默認’ |’ 。
  • bar_suffix: 進度條后綴,默認’| ’ 。
  • color: 進度條的顏色,默認None。

PyCharm進度條顯示問題解決

大部分Python程序員都使用PyCharm,如果在PyCharm中運行進度條代碼后沒有顯示進度條效果,可以按照如下步驟設(shè)置,再重新運行代碼。

Step1. 點擊PyCharm上方的 Run 按鈕,然后點擊 Edit Configurations,進入運行配置頁面。

Step2. 將 Emulate terminal in output console 選項打鉤,然后重新運行代碼。

細心的小伙伴應(yīng)該發(fā)現(xiàn)了,上面的進度條代碼在PyCharm中運行完成后,進度條下有一串奇怪的字符: ‘?[?25h’ ,在終端中用腳本方式 python progress_demo.py 運行相同的代碼,不會有這串符號。

這串字符表示的是光標,在PyCharm中運行完成后,光標被輸出在控制臺上了。解決方法為:按住 Ctrl 鍵,點擊導(dǎo)入的 Bar 類名,跳轉(zhuǎn)到源碼 bar.py 中,再按住 Ctrl 鍵點擊 Bar 類繼承的 Progress 類,進入 progress 庫的 __init__.py 文件中,將該文件中的 SHOW_CURSOR 變量改為空字符串。

修改源碼后再重新運行代碼,光標不顯示了,那一串字符也就不顯示了。

在PyChram中運行進度條,還可能會遇到其他顯示問題,建議出現(xiàn)問題時,用腳本的方式運行,以腳本運行的結(jié)果為準,PyChram中運行只用來調(diào)試代碼。

進度條代碼的另外兩種寫法

1. 上下文管理器: 使用 with … as … 上下文管理器的方式編寫進度條,進度條完成后無需調(diào)用 finish() 方法。

with Bar('Processing', max=20) as bar:
    for i in range(20):
        time.sleep(0.05)
        bar.next()

2. 使用 iter() 方法: 使用 iter() 方法可以簡化迭代器的工作,不需要調(diào)用 next() 方法。

for i in Bar('Processing').iter(range(100)):
    time.sleep(0.05)

這兩種實現(xiàn)方式執(zhí)行的結(jié)果與最開始的實現(xiàn)方式一樣。

實現(xiàn)更多種類的進度條

1. Bar 系列

前文中點進了progress的源碼,可以看到 Bar 類繼承自 Progress 類,Progress 類繼承自 Infinite 類,Progress 類和 Infinite 類實現(xiàn)了進度條的基本功能。

在 bar.py 中,除了 Bar 類,還有6個類,ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar,它們分別是 Bar 類的子類或?qū)O類,繼承了進度條的功能,在每一個類中只是修改了 suffix, fill, empty_fill, bar_prefix, bar_suffix這些變量的值,修改了進度條的樣式。

使用很簡單,只需要導(dǎo)入這些類,將上面代碼中的 Bar 換成這些類就行了,如 FillingSquaresBar。

from progress.bar import Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
import time

bar = FillingSquaresBar('MyProcess:', max=100)
for i in range(100):
    time.sleep(0.05)
    bar.next()
bar.finish()

運行效果:

還可以自己修改上面的參數(shù),設(shè)置個性化的進度條,本文暫不擴展,以后有空可以專門寫文章介紹。

2. Spinner 系列

progress 庫的 spinner.py 中實現(xiàn)了 5 個類,Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner。

from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner

for i in Spinner('MySpinner:').iter(range(100)):
    time.sleep(0.01)

運行效果:

3.Counter 系列

progress 庫的 counter.py 中實現(xiàn)了 4 個類,Counter, Countdown, Stack, Pie。

from progress.counter import Counter, Countdown, Stack, Pie
import time

for i in Counter('Loading:').iter(range(100)):
    time.sleep(0.01)

運行效果:

匯總

接下來將上面介紹的所有種類的進度條全部放到一起,代碼如下:

from progress.bar import Bar, ChargingBar, FillingSquaresBar, \
    FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner
from progress.counter import Counter, Countdown, Stack, Pie
import time
import random

progess_list = [Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar,
                PixelBar, ShadyBar, Spinner, PieSpinner, MoonSpinner, LineSpinner,
                PixelSpinner, Counter, Countdown, Stack, Pie]
for P in progess_list:
    for i in P(P.__name__ + ':').iter(range(100)):
        time.sleep(0.01)

bar = IncrementalBar('Random:', suffix='%(index)d%%')
for i in range(100):
    bar.goto(random.randint(0, 100))
    time.sleep(0.01)
bar.finish()

運行效果:

運行代碼后可以得出所有種類的進度條,與文章開頭從官網(wǎng)截的圖效果相同。

到此這篇關(guān)于一文教你用Python中progress庫實現(xiàn)進度條的文章就介紹到這了,更多相關(guān)Python progress進度條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python延時操作實現(xiàn)方法示例

    Python延時操作實現(xiàn)方法示例

    這篇文章主要介紹了Python延時操作實現(xiàn)方法,結(jié)合實例形式分析了Python基于sched庫與time庫實現(xiàn)延時操作的方法,需要的朋友可以參考下
    2018-08-08
  • pytorch?cuda安裝報錯的解決方法

    pytorch?cuda安裝報錯的解決方法

    這篇文章主要給大家介紹了關(guān)于pytorch?cuda安裝報錯的解決方法,文中通過圖文介紹的非常詳細,對大家學(xué)習(xí)或者使用Pytorch具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-01-01
  • python?中的np.zeros()和np.ones()函數(shù)詳解

    python?中的np.zeros()和np.ones()函數(shù)詳解

    這篇文章主要介紹了python?中的np.zeros()和np.ones()函數(shù),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Python TKinter如何自動關(guān)閉主窗口

    Python TKinter如何自動關(guān)閉主窗口

    這篇文章主要介紹了Python TKinter如何自動關(guān)閉主窗口,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 利用python寫api接口實戰(zhàn)指南

    利用python寫api接口實戰(zhàn)指南

    api接口在我們開發(fā)中的重要性相信大家都這篇文章主要給大家介紹了關(guān)于利用python寫api接口實戰(zhàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 解決Tkinter中button按鈕未按卻主動執(zhí)行command函數(shù)的問題

    解決Tkinter中button按鈕未按卻主動執(zhí)行command函數(shù)的問題

    這篇文章主要介紹了解決Tkinter中button按鈕未按卻主動執(zhí)行command函數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 如何在PyCharm中配置使用Anaconda環(huán)境

    如何在PyCharm中配置使用Anaconda環(huán)境

    這篇文章主要介紹了如何在PyCharm中配置使用Anaconda環(huán)境,圖文講解寫的非常詳細簡單易懂,還不會的小伙伴快來看看吧
    2023-03-03
  • Python列表推導(dǎo)式詳解

    Python列表推導(dǎo)式詳解

    列表推導(dǎo)式是Python構(gòu)建列表(list)的一種快捷方式,可以使用簡潔的代碼就創(chuàng)建出一個列表.本文通過代碼示例詳細介紹了python列表推導(dǎo)式,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • python+html文字點選驗證碼加固安全防線

    python+html文字點選驗證碼加固安全防線

    這篇文章主要為大家介紹了python文字點選驗證碼加固安全防線實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Python?pandas處理缺失值方法詳解(dropna、drop、fillna)

    Python?pandas處理缺失值方法詳解(dropna、drop、fillna)

    缺失數(shù)據(jù)會在很多數(shù)據(jù)分析應(yīng)用中出現(xiàn),pandas的目標之一就是盡可能無痛地處理缺失值,下面這篇文章主要給大家介紹了關(guān)于Python?pandas處理缺失值方法的相關(guān)資料,處理方法分別是dropna、drop、fillna,需要的朋友可以參考下
    2022-08-08

最新評論