使用示例如,
import requests
from tqdm import tqdm
response = requests.get(url, stream=True)
with open("/path/to/localfile", "wb") as fp:
file_size = int(response.headers["content-length"])
chunk_size = 1000
with tqdm(ncols=80, desc="Fetching file", total=file_size, unit_scale=True) as pbar:
# 1k for chunk_size, since Ethernet packet size is around 1500 bytes
for chunk in response.iter_content(chunk_size=chunk_size):
fp.write(chunk)
pbar.update(chunk_size)
requests stream
参数:
当stream=True时,如果是下载大的文件时,用True,可以先对请求的类型进行判断,如果是大文件,可以中止请求,而不用浪费大流量开销。如果不加 stream=True,那么硬盘很可能就不停被写入,文件会变得无比巨大,最后磁盘空间不够死机。
当stream=False时,如果是请求的大文件,其会进入内存并进行下载,消费大量的内存和流量。
一般选取小而快的内容时,将 stream 设置为 False ,可快速读取 response内容。