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的用法,查看更多示例请点击。

你可能感兴趣的:(common)