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

歡迎訪問 生活随笔!

生活随笔

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

综合教程

一个简单、易用的Python命令行(terminal)进度条库

發布時間:2023/12/25 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 一个简单、易用的Python命令行(terminal)进度条库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

eprogress 是一個簡單、易用的基于Python3的命令行(terminal)進度條庫,可以自由選擇使用單行顯示、多行顯示進度條或轉圈加載方式,也可以混合使用。

示例

單行進度條

多行進度條

圓形加載

混合顯示

特性

使用簡單,實例化一個Progress對象,調用update方法即可刷新進度
不依賴任何第三方庫。
可定制進度符號,title,顯示寬度,個性化顯示。
多行、單行顯示進度、圓形轉圈加載隨意搭配。
多線程安全,可在多個線程中更新進度條。

使用方法

導入eprogress

from eprogress import LineProgress, CircleProgress, MultiProgressManager

實例化進度條對象,更新進度

# circle loading
   circle_progress = CircleProgress(title='circle loading')
   for i in range(1, 101):
   		circle_progress.update(i)
   		time.sleep(0.1)

# line progress
        line_progress = LineProgress(title='line progress')
        for i in range(1, 101):
            line_progress.update(i)
            time.sleep(0.05)
# multi line or circle loading progress
progress_manager = MultiProgressManager()
progress_manager.put(str(1001), LineProgress(total=100, title='1 thread'))
progress_manager.put(str(1002), LineProgress(total=100, title='2 thread'))
progress_manager.put(str(1003), LineProgress(total=100, title='3 thread'))
progress_manager.put(str(1004), CircleProgress(title='4 thread'))

... ...

progress_manager.update(key, progress)

圓形加載條使用update(progress)實例方法進行刷新,只有當參數大于0時才會轉動。

線性進度條使包含4個可選參數:

@param total : 進度總數
@param symbol : 進度條符號
@param width : 進度條展示的長度
@param title : 進度條前面展示的文字

創建實例后調用update(progress)實例方法更新進度。

多行進度顯示使用MultiProgressManager類,實例化該類,調用put(key,progressBar)方法統一管理多個進度條,內部使用一個dict來收集進度條,多行顯示的順序為put的順序。更新某個進度條時使用progressMangager的update(key,progress)方法,該key為put進度條時使用的key。

無論是使用多行進度條混合還是使用單行進度條,都不用考慮多線程更新的問題,內部已用Lock()加鎖。

詳細樣例請看源碼:Sample源碼

原理

利用使光標回到本行的行首位置,不使用Python的print()函數,該函數會自動換行,當然你也可以指定print()函數的end參數讓其不換行,如:

print('Complete',end='')

我這里使用sys.stdout.write()來輸出字符:

sys.stdout.write('Complete')

使用ANSI終端指令碼33[K清除光標后面的字符。

使用33[F使用光標回到上一行,這里要注意,光標回到上一行后下面的一行會被清除。

使用threading.Lock()加鎖,在多線程更新進度時確保安全。

抽象類ProgressBar下面有兩個子類,分別為LineProgress和 CircleProgress,可單獨使用這兩個子類來顯示單行的進度條。

多行顯示進度條時使用MultiProgressManager類來管理,把ProgressBar實現類put到MultiProgressManager類里面,用dict來管理,MultiProgressManager提供統一的update(key,progress)實例方法來指定更新哪一行的進度條。

詳細請看源碼:Sample源碼

注意事項

請在Python3環境下使用。
請不要IDE的運行方式使用,需在終端(terminal)下使用。

源碼

作者:竹塵居士

源碼地址:https://github.com/homgwu/eprogress

總結

以上是生活随笔為你收集整理的一个简单、易用的Python命令行(terminal)进度条库的全部內容,希望文章能夠幫你解決所遇到的問題。

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