Python requests 大文件下载

基础

Python requests 下载文件

 

requests模块的iter_content方法

  • 获取文本的时候我们会使用response.text获取文本信息,使用response.content获取字节流
  • 对于大个的文件我们就要采取分块读取的方式
iter_content#一块一块的遍历要下载的内容
iter_lines#一行一行的遍历要下载的内容

使用上面两个函数下载大文件可以防止占用过多的内存,每次只下载小部分数据。

 

requests.get方法的stream

  • 设置requests.get的stream参数为True。
  • 默认情况下是stream的值为false,它会立即开始下载文件并存放到内存当中,倘若文件过大就会导致内存不足的情况.
  • 当把get函数的stream参数设置成True时,它不会立即开始下载,当你使用iter_content或iter_lines遍历内容或访问内容属性时才开始下载。
  • 需要注意一点:文件没有下载之前,它也需要保持连接。

 

🌰

r = requests.get(url_file, stream=True)
f = open("file_path", "wb")
for chunk in r.iter_content(chunk_size=512):
  if chunk:
    f.write(chunk)

【解读】
通过迭代r对象的iter_content方法,同时指定chunk_size=512(即每次读取512个字节)来进行读取。

posted @ 2022-05-02 12:38  青山原  阅读(1171)  评论(0编辑  收藏  举报