python requests文件下载进度条
'''
\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')