一个简单、易用的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)进度条库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAD如何设置自动备份文件及保存
- 下一篇: CAD2004怎么修改标注数值