【问题标题】:How to get a file from a url and then read it as if it were local?如何从 url 获取文件,然后像本地一样读取它?
【发布时间】:2021-03-13 01:39:52
【问题描述】:

我有一个 jpg 图像,它存储在我需要从中访问和读取二进制/字节数据的 url。

我可以使用 Python 获取文件:

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 视为本地文件,以便正确读取二进制文件?

【问题讨论】:

    标签: python python-3.x byte binary-data urllib3


    【解决方案1】:

    本地读取文件时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,这意味着从本地图片文件读取的数据与从网站读取的数据相同。

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2019-09-02
      • 2013-12-21
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      相关资源
      最近更新 更多