gpt4 book ai didi

python - 如何从 urllib.urlopen() 返回的 “file-like object” 创建一个 GzipFile 实例?

转载 作者:太空狗 更新时间:2023-10-29 17:17:06 26 4
gpt4 key购买 nike

我正在使用 Python 研究 Stack Overflow API。我正在尝试解码 API 提供的压缩响应。

import urllib, gzip

url = urllib.urlopen('http://api.stackoverflow.com/1.0/badges/name')
gzip.GzipFile(fileobj=url).read()

根据 the urllib2 documentation , urlopen “返回一个类似文件的对象”。

但是,当我在使用它创建的 GzipFile 对象上运行 read() 时,出现此错误:

AttributeError: addinfourl instance has no attribute 'tell'

据我所知,这是来自 urlopen 返回的对象。

它似乎也没有搜索,因为我在执行此操作时遇到错误:

url.read()
url.seek(0)

这个对象到底是什么,我如何从它创建一个正常运行的 GzipFile 实例?

最佳答案

urlopen docs列出返回的对象支持的方法。我建议将该对象包装在另一个支持 gzip 期望的方法的类中。

其他选项:调用响应对象的读取方法并将结果放入StringIO中对象(应该支持 gzip 期望的所有方法)。不过这可能有点贵。

例如

import gzip
import json
import StringIO
import urllib

url = urllib.urlopen('http://api.stackoverflow.com/1.0/badges/name')
url_f = StringIO.StringIO(url.read())
g = gzip.GzipFile(fileobj=url_f)
j = json.load(g)

关于python - 如何从 urllib.urlopen() 返回的 “file-like object” 创建一个 GzipFile 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4204604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com