Страницы

Поиск по вопросам

пятница, 19 апреля 2019 г.

Как сохранить принятые json данные?

Помогите разобраться. Все перепробовал и не как не могу сохранить принятые данные в файл. Вот код:
def url(): response = requests.get('https://btc-e.nz/api/3/ticker/usd_rur') print(response.json())


Ответ

Если вам не нужно проверять, что сервер вернул именно JSON формат, то метод .json() можно не вызывать, а сразу сохранить ответ на диск:
#!/usr/bin/env python import shutil import requests
url = 'https://httpbin.org/get' r = requests.get(url, stream=True) r.raise_for_status() r.raw.decode_content = True # support Content-Encoding e.g., gzip with open('response.json', 'wb') as file: shutil.copyfileobj(r.raw, file) # copy in chunks, it works for large files
Код с r.json() загружает JSON документ с http-сервера, распознаёт его целиком в памяти и тут же сохраняет на диск:
#!/usr/bin/env python3 import json import requests
url = 'https://httpbin.org/get' r = requests.get(url) r.raise_for_status() data = r.json() # do not create the result file until json is parsed with open('response.json', 'w', encoding='utf-8') as file: json.dump(data, file, indent=2, ensure_ascii=False)
Опции indent=2, ensure_ascii=False использованы, чтобы для улучшить читаемость для людей.
Первый вариант меньше работы выполняет (и меньше проверок). Второй вариант гарантирует, что ответ как JSON распознать можно и поэтому вероятно является предпочтительным, если особых требований нет.

Комментариев нет:

Отправить комментарий