Рубрики
Без рубрики

Как добавить данные в файл JSON в Python? [+ Видео]

https://youtu.be/a2pygiuvcxe Проблема. Составьте заданный объект JSON, хранящийся в файле с именем «your_file.json», например, список словарей. Как добавить данные, такие как новый словарь к нему? # File “your_file.json” (ранее) [{“ALICE”: 24, “BOB”: 27}] # Новая запись: {“Carl”: 33} # файл “your_file.json” (после) [{“Alice «: 24,« Боб »: 27}, {” Carl “: 33}] Метод 1: … Как добавить данные в файл json в Python? [+ Видео] Подробнее »

Автор оригинала: Chris.

Постановка проблемы

Учитывая объект JSON, хранящийся в файле с именем "your_file.json" такие как список словарей. Как добавить данные, такие как новый словарь к нему?

# File "your_file.json" (BEFORE)
[{"alice": 24, "bob": 27}]

# New entry:
{"carl": 33}

# File "your_file.json" (AFTER)
[{"alice": 24, "bob": 27}, {"carl": 33}]

Метод 1: Использование json.load (файл) и json.dump (данные, файл)

Чтобы обновить объект JSON в файле, импортируйте JSON Библиотека, прочитайте файл с json.load (файл ), добавьте новую запись в Список или Словарь Структура данных данные и напишите обновленный объект JSON с json.dump (данные, файл) Отказ

В частности, вот четыре конкретных шага для обновления существующего файла JSON с новой записью:

  1. Импорт JSON библиотека с Импорт JSON
  2. Прочитайте файл JSON в структуре данных, используя data.load (файл) После открытия файла с Открыть (имя файла, «R») в режиме чтения "R" Отказ В этот момент у вас есть данные JSON в вашем Python Code в качестве словаря или списка (в зависимости от того, как ваши данные выглядят следующим образом – см. Таблицу преобразования ниже).
  3. Обновите структуру данных Python с новой записью (например, новый словарь на Добавить в список).
  4. Напишите обновленный JSON данные Вернуться к файлу JSON, используя json.dump (данные, файл) После открытия файла в режиме записи, используя Открыть (имя файла, "w") Отказ
import json

filename = 'your_file.json'
entry = {'carl': 33}

# 1. Read file contents
with open(filename, "r") as file:
    data = json.load(file)

# 2. Update json object
data.append(entry)

# 3. Write json file
with open(filename, "w") as file:
    json.dump(data, file)

На самом деле, при использовании json.load () Метод, возвращенный объект Python преобразуется из формата JSON, используя этот Конверсионная таблица :

объект обдумывать
множество список
нить ул
Номер (INT) int.
Номер (реальный) плавать
истинный Истинный
ложный Ложь
значение NULL Никто

Чтобы получить лучшее чувство для самых важных структур данных, таких как словарь Python, вы можете захотеть проверить академию компьютерной науки Finxter:

Ultimate Guide к словари в Python

Курс бесплатный для всех премиальных членов Finxter. 🙂.

Способ 2: Открытие файла только один раз, сбросая указатель файла

Вместо того, чтобы дважды открывать объект файла, вы можете открыть его только один раз и сбросить указатель файла, используя файл.seek (0), чтобы перезаписать существующий файл содержимого, используя эти четыре шага:

  1. Использовать Открыть ("yous_file.json", "R +") создать Файл Объект в режиме чтения и записи "R +" Отказ
  2. Позвоните json.load (файл) Чтобы загрузить данные из файла в свой код Python. Теперь вы можете обновить данные в своем коде Python. Например, если вы JSON File структурирован как Список словарей , просто Добавить новый словарь.
  3. Использовать file.seek (0) Чтобы сбросить указатель файла в положение 0, чтобы вы могли перезаписать его вместо того, чтобы снова добавить весь объект JSON.
  4. Позвоните json.dump (данные, файл) перезаписать Файл с данные Отказ

Вот конкретный код:

import json

filename = 'your_file.json'
# Old JSON File:
# [{"alice": 24, "bob": 27}]

entry = {'carl': 33}

with open(filename, "r+") as file:
    data = json.load(file)
    data.append(entry)
    file.seek(0)
    json.dump(data, file)

# New JSON file: 
# [{"alice": 24, "bob": 27}, {"carl": 33}]

Способ 3: Создание исходного файла JSON и обновление его впоследствии

Если у вас еще нет файла JSON, вы можете сначала создать файл из начального списка следующим образом:

import json

filename = 'your_file.json'
lst = [{'alice': 24, 'bob': 27}]

# Write the initial json object (list of dicts)
with open(filename, mode='w') as f:
    json.dump(lst, f)

# Append the new dict to the list and overwrite whole file
with open(filename, mode='w') as f:
    lst.append({'carl':33})
    json.dump(lst, f)

Резюме и обсуждение

Все три метода, представленные в этой статье, используют в основном ту же идею: призывая json.dump (данные, файл ) для обновления файла с некоторыми данными. Переменная данных может удерживать все разные форматы JSON, такие как список словарей или словарь.

Если вам сначала нужно загрузить данные из файла, используйте json.load (файл) На файл объект открыл в режиме чтения.

Как правило, добавление данных в файл JSON не очень хорошая идея, потому что для каждого небольшого обновления вы должны прочитать и анализировать весь файл объект. Если ваш файл JSON имеет N Записи, сложность выполнения просто обновления это O (n) Отказ

Лучший подход будет хранить данные в качестве файла CSV, который можно прочитать строку, которая упрощает анализ и значительно обновлять, просто добавив одну строку в файл, который имеет постоянную сложность выполнения.

Спасибо за изучение этой статьи, не стесняйтесь проверить мой бесплатный курс Python Chite Lists, чтобы оставаться острым и постоянно улучшать свои навыки Python, день в день. 🙂.

Вы можете подписаться бесплатно здесь:

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.