使用请求模块对图像下载进行故障排除
问题:
尝试下载图像时使用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() 方法自定义块大小。
附加说明:
以上是如何使用 Python 的请求模块修复图像下载问题?的详细内容。更多信息请关注PHP中文网其他相关文章!