Я пытаюсь загрузить файл JSON с
with urlopen(url_str) as url:
return json.loads(url.read().decode())
и работает недопустимо медленно (в 10 и более раз медленнее, чем эквивалентный Java-код).
Есть ли способ выполнить эту операцию с нормальной скоростью?
UPDATE
Я написал так:
def read_json_data(url_str: str):
req = Request(url_str, headers={'Accept-encoding': 'gzip'})
with urlopen(req) as resp:
if resp.info().get('Content-Encoding') == 'gzip':
with gzip.GzipFile(fileobj=resp) as fp:
data = json.load(fp)
else:
data = json.load(resp)
return data
Но получаю ошибку на json.load(fp)
:
TypeError: the JSON object must be str, not 'bytes'
Почему? Разве json.load
(без s
) не принимает указатель файла?