Tôi đang chơi xung quanh với API ngăn xếp ngăn xếp bằng cách sử dụng Python. Tôi đang cố gắng giải mã các câu trả lời được gzipped mà API cung cấp.Làm cách nào để tạo một cá thể GzipFile từ "đối tượng giống như tệp" mà urllib.urlopen() trả về?
import urllib, gzip
url = urllib.urlopen('http://api.stackoverflow.com/1.0/badges/name')
gzip.GzipFile(fileobj=url).read()
Theo trả về the urllib2 documentation, urlopen
“trả về một đối tượng giống như tệp”.
Tuy nhiên, khi tôi chạy read()
trên đối tượng GzipFile tôi đã tạo ra sử dụng nó, tôi nhận được lỗi này:
AttributeError: addinfourl instance has no attribute 'tell'
Theo như tôi có thể nói, đây là đến từ các đối tượng được trả về bởi urlopen
.
Nó không xuất hiện để có tìm kiếm một trong hai, như tôi nhận được một lỗi khi tôi làm điều này:
url.read()
url.seek(0)
gì chính xác là đối tượng này, và làm thế nào để tạo ra một hoạt động GzipFile
dụ từ nó?
'Nội dung Mã hóa: gzip' phải được xử lý bởi thư viện http nhưng tiếc là không phải. Đây là [vấn đề 9500] (http://bugs.python.org/issue9500) trong cơ sở dữ liệu lỗi của Python, vì sự quan tâm. –
@Magnus: chúc mừng, rất vui được biết ít nhất là trong trình theo dõi lỗi. –