问题描述
我有一个 jpg 图像,该图像存储在一个 url 中,我需要从中访问和读取二进制/字节数据。
import urllib3
http = urllib3.PoolManager()
url = 'link to jpg'
contents = http.request('GET' url)
纯粹使用 contents.data
读取此请求中的数据不会提供正确的二进制文件,但是如果我下载文件并在本地读取它,我会得到正确的二进制文件。但我无法继续阅读文件内容:
with open(contents,"rb") as image:
f = image.read()
使用请求中的字节也不起作用:
with open(contents.data,"rb") as image:
f = image.read()
如何将 url 中的 jpg 视为本地文件,以便我可以正确读取二进制文件?
解决方法
本地读取file时f中得到的结果和contents.data
的结果完全一样。
import urllib3
http = urllib3.PoolManager()
url = 'https://tinyjpg.com/images/social/website.jpg'
contents = http.request('GET',url)
with open('website.jpg',"rb") as image:
f = image.read()
print(f==contents.data)
您可以从代码中的链接下载图片,然后运行此代码,您将收到输出True
,这意味着从本地图片文件读取的数据与从网站读取的数据相同。