使用示例如,

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内容。

Last modification:August 27th, 2021 at 02:02 pm