response.content在这种情况下,您应该使用:
with open('/tmp/metadata.pdf', 'wb') as f: f.write(response.content)从文件:
对于非文本请求,您还可以字节形式访问响应主体:
>>> r.contentb'[{"repository":{"open_issues":0,"url":"https://github.com/...
因此,这意味着:
response.text将输出作为字符串对象返回,在下载 文本文件 时使用它。如HTML文件等
并
response.content以字节对象返回输出,在下载 二进制文件 时使用它。如PDF文件,音频文件,图像等。
您还可以使用
response.raw代替。但是,当您要下载的文件很大时,请使用它。以下是一个基本示例,您也可以在文档中找到该示例:
import requestsurl = '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非常复杂。
关联:
如何使用requests.py在python中下载大文件?
如何使用请求下载图像



