使用原始 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)