91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python中progress庫實現進度條

發布時間:2023-03-25 11:14:08 來源:億速云 閱讀:133 作者:iii 欄目:開發技術

這篇文章主要介紹“如何用Python中progress庫實現進度條”,在日常操作中,相信很多人在如何用Python中progress庫實現進度條問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何用Python中progress庫實現進度條”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

progress庫安裝和介紹

1.安裝progress庫

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

pip install progress

2.progress進度條效果展示

在官網可以看到progress能實現的各種進度條效果,如下動圖。

如何用Python中progress庫實現進度條

progress實現進度條

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

# 創建Bar類的實例
bar = Bar('MyProcess:', max=100)
# 循環處理某業務,調用bar對象的next()方法,循環次數等于max
for _ in range(100):
	# Do some work
    time.sleep(0.05)
    bar.next()
# 循環完成后調用finish()方法
bar.finish()

運行效果:

如何用Python中progress庫實現進度條

使用 progress 庫實現進度條很簡單,從 progress 庫的 bar.py 中導入 Bar 類,實例化一個對象,然后循環處理業務和調用 next() 方法,處理完成后調用 finish() 方法結束進度條。

Bar 類的主要參數有:

  • message: 進度條顯示的信息,這個參數默認可以用位置參數傳給 Bar 。

  • width: 修改進度條的寬度,默認32。

  • max: 進度條被分成幾等份,如100。

  • suffix: 進度百分比顯示的格式,默認 ‘%(index)d/%(max)d’ 。

  • fill: 進度條用什么填充,默認’#’ 。

  • empty_fill: 未加載的進度條用什么填充,默認空格’ ’ 。

  • bar_prefix: 進度條前綴,默認’ |’ 。

  • bar_suffix: 進度條后綴,默認’| ’ 。

  • color: 進度條的顏色,默認None。

PyCharm進度條顯示問題解決

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

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

如何用Python中progress庫實現進度條

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

如何用Python中progress庫實現進度條

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

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

如何用Python中progress庫實現進度條

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

如何用Python中progress庫實現進度條

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

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

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

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

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

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

這兩種實現方式執行的結果與最開始的實現方式一樣。

實現更多種類的進度條

1. Bar 系列

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

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

使用很簡單,只需要導入這些類,將上面代碼中的 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()

運行效果:

如何用Python中progress庫實現進度條

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

2. Spinner 系列

progress 庫的 spinner.py 中實現了 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)

運行效果:

如何用Python中progress庫實現進度條

3.Counter 系列

progress 庫的 counter.py 中實現了 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)

運行效果:

如何用Python中progress庫實現進度條

匯總

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

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

運行效果:

如何用Python中progress庫實現進度條

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

到此,關于“如何用Python中progress庫實現進度條”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

静宁县| 龙江县| 彩票| 报价| 凉城县| 镇巴县| 田阳县| 绥滨县| 平顺县| 合江县| 兰溪市| 米林县| 卓资县| 大田县| 张家界市| 伽师县| 拜泉县| 伊川县| 自贡市| 策勒县| 定兴县| 涞水县| 原平市| 鄂托克前旗| 阜新市| 三都| 民丰县| 高雄市| 伊宁县| 揭西县| 定陶县| 宿迁市| 收藏| 江川县| 中牟县| 海安县| 读书| 西充县| 宜兰市| 通许县| 三穗县|