我正在使用Python玩弄Stack Overflow API。我试图解码API返回的被压缩的响应。
import urllib, gzip
url = urllib.urlopen('http://api.stackoverflow.com/1.0/badges/name')
gzip.GzipFile(fileobj=url).read()
根据urllib2文档,urlopen
返回一个“类文件对象”。然而,当我在使用它创建的GzipFile对象上运行
read()
时,会出现以下错误:AttributeError: addinfourl instance has no attribute 'tell'
据我所知,这个问题来自于urlopen
返回的对象。看起来它也没有seek方法,因为当我尝试使用该方法时会出现错误:
url.read()
url.seek(0)
这个对象究竟是什么,我该如何从它创建一个可用的GzipFile
实例?
Content-Encoding: gzip
应该由 http 库处理,但不幸的是它没有。对于感兴趣的人来说,这是 Python bug 数据库中的 issue 9500。 - Magnus Hoff