Работа с 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
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.