Работа с JSON-файлами в Python

Бывает такое, что при открытии файлов в них оказываются данные, очень похожие на словари и списки. Или наоборот, вы хотите записать в файл словарь, но не знаете как это сделать. На помощь приходит стандартный модуль json.

JSON — текстовый формат данных, очень похожий на словари и списки. Изначально он пришёл из JavaScript, но сейчас используется повсеместно. Хоть данные и похожи на словари и списки, в файл записан обычный текст. Чтобы превратить его в словари и списки нужна библиотека json.

Прочитать JSON

Пусть есть файл capitals.json с очень похожим на словарь содержимым:

{
    "Россия": "Москва",
    "Беларусь": "Минск",
    "Казахстан": "Нур-Султан"
}

Простое открытие этого файла выглядит так:

with open("capitals.json", "r") as my_file:
    capitals = my_file.read()

Проблема в том, что в capitals будет лежать не словарь, а строка. Если попытаться достать значение по ключу, то случится ошибка:

print(capitals["Россия"])
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
TypeError: string indices must be integers

Чтобы превратить строку в словарь понадобится модуль json. Его не нужно дополнительно устанавливать, он входит в стандартный набор библиотек:

import json

with open("capitals.json", "r") as my_file:
    capitals_json = my_file.read()

capitals = json.loads(capitals_json)

Функция json.loads взяла строку capitals_json и на основе её данных сделала словарь. Теперь в capitals лежит не строка, а словарь:

print(capitals["Россия"])
# Москва

 

«Девман» — авторская методика обучения программированию на Python. Готовим к работе крутых программистов.

Запись в файл

Если же вам нужно сохранить в файл словарь или список, то это тоже можно легко сделать, по аналогии. Сначала из словаря сделаем строку, затем сохраним её в файл:

import json

capitals = {
    "Россия": "Москва",
    "Беларусь": "Минск",
    "Казахстан": "Нур-Султан"
}

capitals_json = json.dumps(capitals)

with open("capitals.json", "w") as my_file:
    my_file.write(capitals_json)

Читайте дальше


Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.