# 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会自动处理。
版权归属:
Administrator
许可协议:
本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
评论区