日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Python 输出命令行进度条

發布時間:2023/12/24 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 Python 输出命令行进度条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用 pip 安裝時,你會發現有下載進度條,我們也可以借助開源的第三方庫來實現這個功能,在項目輸出時增加一些可視化效果。

一個簡單易用的第三方庫是:progress

作者提供了動圖很直觀地展現了實現的所有輸出。

?

這個庫實現了兩類樣式,一類是有終點的進度條樣式,另一類是多用于加載的轉圈樣式。

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


上面介紹的庫,實現的功能很簡單,而且默認只能輸出到終端。

如果有更復雜的使用場景,推薦使用另一個庫:python-progressbar

這個庫實現了更多功能,可以自定義組合出一個進度條樣式,還可以指定輸出流。

基本的使用很簡單,可以直接傳入迭代對象。

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 中的文檔

歡迎關注

?

微信公眾號:面向人生編程

編程思維不應只存留在代碼之中,更應伴隨于整個人生旅途,這個公眾號不只聊技術,還會聊產品/互聯網/經濟學等廣泛話題,所以也歡迎非程序員關注。

總結

以上是生活随笔為你收集整理的Python 输出命令行进度条的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。