使用原始 raw 流的主要原因是提高性能和节省内存,特别是在处理大型文件时。通过流式下载,数据可以逐块读取,而不需要将整个响应加载到内存中。这对于大文件或大数据量的请求尤为重要。

原始 raw 流

如果你想获取服务器返回的原始数据流,你可以使用 response.raw 属性,它将返回一个HTTPResponse对象,你可以使用该对象的read()方法读取内容。

如果你确实要这么干,你应该在最初的请求中设置stream=True


import requests

url = "http://example.com/largefile.zip"

response = requests.get(url,stream=True)

response.raw.read()

可以指定要读取的字节数:

response.raw.read(1024)

iter_content 方法

当数据过大时,应使用response.iter_content()方法来处理,该方法以迭代器的形式逐块读取响应内容;

例:下载大文件

在这个例子中,文件会逐块下载,避免一次性将整个文件加载到内存中,从而提高效率;

import requests

url = 'http://example.com/largefile.zip'

response = requests.get(url, stream=True)
response.raise_for_status()

with open('largefile.zip','wb') as f:
    for chunk in response.iter_content(chunk_size=8192):
        #每次读取8kb
        f.write(chunk)