关于使用 response.iter_content() 逐块写入图片文件的原因
主要出于以下两个核心考量:
1. 内存控制
- 直接使用 response.content 会一次性将整个文件加载到内存
- 大文件(如视频/高清图)可能导致内存溢出(OOM)
- iter_content() 通过分块加载(如10240字节)减少内存峰值
2. 网络稳定性
- 分块写入可应对不稳定的网络连接
- 若中途断开连接,已写入的块数据不会丢失
- 特别适合大文件下载场景
import requests
url = "[url=http://example.com/image.jpg"]http://example.com/image.jpg"[/url]
response = requests.get(url, stream=True) # 关键参数
with open("image.jpg", "wb") as f:
for chunk in response.iter_content(10240): # 分块写入
if chunk: # 过滤空块
f.write(chunk)
注意:必须设置 stream=True 参数才能启用流式传输,否则仍然会强制加载完整内容到内存
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |