人生進度條百分之20_Python 輸出命令列進度條
阿新 • • 發佈:2021-01-06
技術標籤:人生進度條百分之20
在使用 pip 安裝時,你會發現有下載進度條,我們也可以藉助開源的第三方庫來實現這個功能,在專案輸出時增加一些視覺化效果。
一個簡單易用的第三方庫是:
verigak/progressgithub.com作者提供了動圖很直觀地展現了實現的所有輸出。
這個庫實現了兩類樣式,一類是有終點的進度條樣式,另一類是多用於載入的轉圈樣式。
import time from progress.bar import Bar bar = Bar('Processing', max=100, fill='@', suffix='%(percent)d%%') for i in range(100): time.sleep(0.1) bar.next() bar.finish()
引數定義的功能:
- max: 進度條最大進度
- fill:進度條填充的字元
- suffix:百分比的樣式
執行上述程式碼會得到輸出
Processing |@@@@@@ | 20%
同時也提供上下文的用法(需要用 Github 裡的原始碼):
with Bar('Processing', max=20) as bar:
for i in range(20):
# Do some work
bar.next()
另一類轉圈樣式,用法和Bar
類似,只要沒達到終點就一直呼叫next
方法即可
from progress.spinner import Spinner spinner = Spinner('Loading ') while state != 'FINISHED': # Do some work spinner.next()
動圖裡的所有樣式都是作者已經實現的派生類,用法基本都一樣,當然也可以繼承基礎類來自己實現更多的功能。
class SlowBar(Bar):
suffix = '%(remaining_hours)d hours remaining'
@property
def remaining_hours(self):
return self.eta // 3600
上面介紹的庫,實現的功能很簡單,而且預設只能輸出到終端。
如果有更復雜的使用場景,推薦使用另一個庫:
WoLpH/python-progressbargithub.com這個庫實現了更多功能,可以自定義組合出一個進度條樣式,還可以指定輸出流。
基本的使用很簡單,可以直接傳入迭代物件。
import time
import progressbar
for i in progressbar.progressbar(range(100)):
time.sleep(0.02)
輸出如下:
70% (70 of 100) |################ | Elapsed Time: 0:00:01 ETA: 0:00:00
也可以生成物件後呼叫update
方法 。
import time
import progressbar
bar = progressbar.ProgressBar(max_value=100)
for i in range(100):
time.sleep(0.1)
bar.update(i)
最有特點之處就是可以自定義元件,比如我們來實現類似於動圖中轉圈載入的樣式。
import time
import progressbar
widgets = [
'Loading: ',
'[', progressbar.AnimatedMarker(), ']',
' ',
progressbar.Timer()
]
bar = progressbar.ProgressBar(
widgets=widgets, max_value=progressbar.UnknownLength)
for i in range(100):
time.sleep(0.5)
bar.update(i)
輸出樣式是這樣的,方括號中的會一直旋轉
Loading: [] Elapsed Time: 0:00:13
更多功能不再贅述,可以檢視 Github 中的文件
更多學習資料
歡迎關注微信公眾號:面向人生程式設計,本號長期分享經驗向文章
回覆【資料】獲取本人精選的學習視訊及程式碼