首页 >后端开发 >Python教程 >如何使用 Python 的请求模块修复图像下载问题?

如何使用 Python 的请求模块修复图像下载问题?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-21 08:24:11166浏览

How to Fix Image Download Issues Using Python's Requests Module?

使用请求模块对图像下载进行故障排除

问题:

尝试下载图像时使用Python中的Requests模块,代码如下失败:

r = requests.get(settings.STATICMAP_URL.format(**data))
if r.status_code == 200:
    img = r.raw.read()
    with open(path, 'w') as f:
        f.write(img)

您可以帮助识别问题并提出解决方案吗?

答案:

使用请求模块下载图像,您可以使用 response.raw 文件对象或迭代响应。以下是方法:

使用response.raw:

import requests
import shutil

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)

此方法强制解压压缩响应并使用shutil.copyfileobj()将数据流式传输到文件对象。

迭代响应:

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r:
            f.write(chunk)

此方法可确保数据解压缩并以 128 字节块读取数据。您可以使用 Response.iter_content() 方法自定义块大小。

附加说明:

  • 以二进制模式打开目标文件('wb' )以防止换行符翻译。
  • 设置stream=True以避免将整个图像加载到记忆力。

以上是如何使用 Python 的请求模块修复图像下载问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn