python 使用progressbar2實現進度條展示

之前我們實現進度條展示使用的自己寫的方法,且每次都是打印一行新的字符串顯示當前進度。如何更加優美的展示進度條,成爲我的新目標。應該有很多人和我有一樣的想法,果然progressbar2就是一個很好第三方庫解決這一需求。記住是progressbar2,不是progressbar。
直接上代碼展示我們藉助第三方庫progressbar2實現的代碼優化。當然依舊是在原來下載視頻的方法上進行完善。註釋在代碼中


import progressbar
def download_file(url, path):
    '''
    下載視頻
    :param url: 視頻地址
    :param path: 保存路徑
    '''
    with requests.get(url, stream=True) as r:
        chunk_size = 1024
        content_size = float(r.headers[ 'content-length' ])
        print '下載開始'
        
        # 進度條樣式
        widgets = [
           '下載: ', progressbar.Percentage(), # 進度條標題
           ' ', progressbar.Bar(marker='>', left='[', right=']', fill=' '), # 進度條填充、邊緣字符
           ' ', progressbar.Timer(), # 已用的時間
           ' ', progressbar.ETA(), # 剩餘時間
           ' ', progressbar.FileTransferSpeed(),# 下載速度
        ]
        
        bar = progressbar.ProgressBar(widgets=widgets, max_value=content_size) # 實例化對象

        with open(path, "wb") as f:

           loaded = 0
           bar.start() # 調用進度條start方法,在調用update方法
           for chunk in r.iter_content(chunk_size=chunk_size):
              loaded += len(chunk)
              bar.update(loaded) # 更新進度條狀態
              f.write(chunk)
           bar.finish() # 結束進度條
        print '下載結束'

實現的效果:
在這裏插入圖片描述
在這裏插入圖片描述
完美!

更多progressbar2的用法,查看更多示例請點擊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章