在这种情况下,您应该使用response.content:
with open('/tmp/metadata.pdf', 'wb') as f:
f.write(response.content)
You can also access the response body as bytes, for non-text requests:
06001
这意味着:response.text将输出作为字符串对象返回,在下载文本文件时使用它.如HTML文件等
并且response.content将输出作为bytes对象返回,在下载二进制文件时使用它.如PDF文件,音频文件,图像等
You can also use response.raw instead.但是,当您要下载的文件很大时,请使用它.以下是您可以在文档中找到的基本示例:
import requests
url = 'http://www.hrecos.org//images/Data/forweb/HRTVBSH.Metadata.pdf'
r = requests.get(url, stream=True)
with open('/tmp/metadata.pdf', 'wb') as fd:
for chunk in r.iter_content(chunk_size):
fd.write(chunk)
chunk_size是您要使用的块大小.如果将其设置为2000,则请求将下载该文件的前2000个字节,将它们写入文件,并再次执行此操作,一次又一次,除非完成.
所以这可以节省你的RAM.但是我更喜欢在这种情况下使用response.content,因为你的文件很小.正如您所看到的,使用response.raw很复杂.
涉及: