尝试使用 Python 的 requests 模块从互联网下载图像时,与使用 urllib2 的 urlopen 相比,您可能会遇到代码问题方法。本文解决了这些挑战并提供了解决方案。
img = urllib2.urlopen(settings.STATICMAP_URL.format(**data)) with open(path, 'w') as f: f.write(img.read())
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)
问题使用 requests 时会出现此问题,因为包含图像数据的响应中的属性与 urlopen 中的属性不同urllib2.
要从请求响应中检索图像数据,有两个选项:
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)
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)
通过在请求调用中设置stream=True,可以防止一次将整个图像下载到内存中。该文件应以二进制模式打开以避免错误。
以上是如何使用Python的'requests”模块正确下载图像?的详细内容。更多信息请关注PHP中文网其他相关文章!