python requests下载文件显示进度调
时间: 2024-09-10 08:16:20 浏览: 52
在Python中,使用`requests`库下载文件并显示下载进度是一个常见的需求。为了实现这个功能,你可以使用`requests`库提供的`stream`参数来开启流式下载,并且可以结合`progress`库来实时显示下载进度。以下是一个简单的示例代码:
```python
import requests
from tqdm import tqdm
def download_file(url, local_filename):
# 发起请求,设置stream=True以启用流式传输
r = requests.get(url, stream=True)
# 打开一个本地文件用于写入
with open(local_filename, 'wb') as f:
# 获取文件大小
total_size = int(r.headers.get('content-length', 0))
# 创建一个tqdm进度条实例,初始值为0,最大值为文件大小
progress_bar = tqdm(total=total_size, unit='iB', unit_scale=True)
for data in r.iter_content(chunk_size=1024):
# 每次读取一部分数据并写入文件
progress_bar.update(len(data))
f.write(data)
# 完成后关闭进度条
progress_bar.close()
# 使用函数下载文件
download_file('http://example.com/file.zip', 'local_file.zip')
```
在这段代码中,`requests.get`用于发起HTTP请求,`stream=True`参数使得请求以流式的方式进行,这样可以在不将整个文件内容加载到内存的情况下开始下载。`iter_content`方法用于迭代响应内容,`chunk_size`参数定义了每次迭代返回的数据块大小。`tqdm`库用来创建一个进度条,它会随着数据的写入而更新。
阅读全文