requests 流下载 + 进度条
# coding=utf-8
import requests
from tqdm import tqdm
# 要下载文件的URL
url = "https://pan.hilxy.com/d/%E5%BD%B1%E9%9F%B3%E8%A7%86%E5%90%AC/MV/%E5%BC%A0%E6%9D%B0%20%E9%80%86%E6%88%98%20MV.mp4"
# 使用streaming模式发送GET请求
res = requests.get(url, stream=True)
# 从Content-Length头部获取文件总大小(字节)
file_size_bytes = int(res.headers.get('Content-Length', 0))
# 将字节转换为MB,用于进度条显示
file_size_mb = file_size_bytes / (1024 * 1024)
'''
total:设置文件大小
unit:单位
leave:是否在完成后继续显示进度条
desc:进度条前缀描述
'''
# 初始化进度条,设置单位为:MB,并在下载完成后显示描述,并设置前缀为:正在下载...
pbar = tqdm(total=file_size_mb, unit='MB', leave=True, desc='正在下载...')
# 以二进制模式打开文件准备写入
with open('电影下载.mp4', 'wb') as f:
# 迭代响应内容,每次获取一个数据块
for chunk in res.iter_content(chunk_size=1024*1024*2): # 每次获取2MB的数据块
if chunk: # 检查数据块是否为空(对于保持连接的空数据块进行过滤)
f.write(chunk) # 将数据块写入文件
# 根据数据块的实际大小(MB)更新进度条
chunk_size_mb = len(chunk) / (1024 * 1024)
pbar.update(chunk_size_mb) # 更新进度条
pbar.set_description('下载完成')
# 注意:在这个例子中,我们不需要手动调用pbar.close(),因为with语句结束时tqdm会自动处理。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 行迹小栈
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果