首页 > 技术文章 > python requests文件下载进度条

zwnsyw 2021-04-08 10:37 原文

'''
\r 表示将光标的位置回退到本行的开头位置
print(1, 2, end='') 默认换行,end='' 表示用''替换默认换行(也就是不换行)
%% 转义%   输出一个%
%.2f   小数,保留两位小数
'''

# 进度条模块
def progressbar(url, filepath='./必须加上扩展名'):
    start = time.time()  # 下载开始时间
    response = requests.get(url, stream=True)  # stream=True必须写上
    size = 0  # 初始化已下载大小
    chunk_size = 1024  # 每次下载的数据大小
    content_size = int(response.headers['content-length'])  # 下载文件总大小
    try:
        if response.status_code == 200:  # 判断是否响应成功
            print('开始下载,[文件大小]:{size:.2f} MB'.format(
                size=content_size / chunk_size / 1024))  # 开始下载,显示下载文件大小
            # filepath = '下载/222.mp4'  #注:必须加上扩展名
            with open(filepath, 'wb') as file:  # 显示进度条
                for data in response.iter_content(chunk_size=chunk_size):
                    file.write(data)
                    size += len(data)
                    print('\r' + '[下载进度]:%s%.2f%%' % (
                        '>' * int(size * 50 / content_size), float(size / content_size * 100)), end=' ')
        end = time.time()  # 下载结束时间
        print('完成!用时: %.2f秒' % (end - start))  # 输出下载用时时间
    except Exception:
        pass


u = 'https://api.amemv.com/aweme/v1/play/?video_id=v0200f280000bq005t7eqk83orvbego0&line=1&file_id=57389ab9d06d4cefbff0fb236f7f603f&sign=11ef4a9e0efa17547fc126480caa1bae&is_play_url=1&source=PackSourceEnum_DOUYIN_REFLOW'
progressbar(url=u, filepath='./2223.mp4')

 

推荐阅读