Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
download image using requests and shutil
"""You can either use the response.raw file object, or iterate over the response.
To use the response.raw file-like object will not, by default, decode compressed responses (with GZIP or deflate).
You can force it to decompress for you anyway by setting the decode_content attribute to True
(requests sets it to False to control decoding itself). You can then use shutil.copyfileobj()
to have Python stream the data to a file object:
"""
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)
To iterate over the response use a loop; iterating like this ensures that data is decompressed by this stage:
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)
# This'll read the data in 128 byte chunks; if you feel another chunk size works better,
# use the Response.iter_content() method with a custom chunk size:
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.iter_content(1024):
f.write(chunk)
# Note that you need to open the destination file in binary mode to ensure python doesn't try and translate newlines for you.
# We also set stream=True so that requests doesn't download the whole image into memory first.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.