鱼C论坛

 找回密码
 立即注册
查看: 687|回复: 4

[已解决]使用response=requests.get()下载图片,图片保存为文件时

[复制链接]
发表于 2025-4-4 00:25:12 | 显示全部楼层    本楼为最佳答案   
关于使用 response.iter_content() 逐块写入图片文件的原因

主要出于以下两个核心考量:

1. 内存控制
- 直接使用 response.content 会一次性将整个文件加载到内存
- 大文件(如视频/高清图)可能导致内存溢出(OOM)
- iter_content() 通过分块加载(如10240字节)减少内存峰值

2. 网络稳定性
- 分块写入可应对不稳定的网络连接
- 若中途断开连接,已写入的块数据不会丢失
- 特别适合大文件下载场景


  1. import requests

  2. url = "[url=http://example.com/image.jpg"]http://example.com/image.jpg"[/url]
  3. response = requests.get(url, stream=True)  # 关键参数

  4. with open("image.jpg", "wb") as f:
  5.     for chunk in response.iter_content(10240):  # 分块写入
  6.         if chunk:  # 过滤空块
  7.             f.write(chunk)
复制代码


注意:必须设置 stream=True 参数才能启用流式传输,否则仍然会强制加载完整内容到内存

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-27 06:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表