Добавить в json файл python

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

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

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

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

# File "your_file.json" (BEFORE) [] # New entry: # File "your_file.json" (AFTER) [, ]

Метод 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 = # 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, используя этот Конверсионная таблица :

Читайте также:  Python csv read one row
объект обдумывать
множество список
нить ул
Номер (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: # [] entry = with open(filename, "r+") as file: data = json.load(file) data.append(entry) file.seek(0) json.dump(data, file) # New JSON file: # [, ]

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

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

import json filename = 'your_file.json' lst = [] # 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() 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Читайте ещё по теме:

Источник

Python – Append to JSON File

Learn to read a JSON file and append JSON data into a file in Python.

1. Steps for Appending to a JSON File

In Python, appending JSON to a file consists of the following steps:

  • Read the JSON in Python dict or list object.
  • Append the JSON to dict (or list ) object by modifying it.
  • Write the updated dict (or list ) object into the original file.

Refer to the following articles to learn how to read JSON from a file and write JSON to a file in Python.

2. Appending to a JSON Array using Python List

The users.json file has a list of 2 users. We will append a third user to it.

import json from os import path filename = 'c:/temp/users.json' listObj = [] # Check if file exists if path.isfile(filename) is False: raise Exception("File not found") # Read JSON file with open(filename) as fp: listObj = json.load(fp) # Verify existing list print(listObj) print(type(listObj)) listObj.append(< "Name": "Person_3", "Age": 33, "Email": "33@gmail.com" >) # Verify updated list print(listObj) with open(filename, 'w') as json_file: json.dump(listObj, json_file, indent=4, separators=(',',': ')) print('Successfully appended to the JSON file') 

3. Appending to a JSON Object using Python Dictionary

The users.json file has a list of 2 users. We will append a new attribute role and modify an existing attribute Age.

import json from os import path filename = 'c:/temp/users.json' dictObj = [] # Check if file exists if path.isfile(filename) is False: raise Exception("File not found") # Read JSON file with open(filename) as fp: dictObj = json.load(fp) # Verify existing dict print(dictObj) print(type(dictObj)) dictObj.update() # Verify updated dict print(dictObj) with open(filename, 'w') as json_file: json.dump(dictObj, json_file, indent=4, separators=(',',': ')) print('Successfully written to the JSON file') 

4. AttributeError: ‘dict’ object has no attribute ‘append’

We may get this error if the JSON object read from the json.load() method is of type dict .

The first example reads a JSON list [. ] so the loaded object is of type list . If we are reading a file that has JSON object <. >then the loaded object will be of type dictionary and the above code will give AttributeError while invoking the list operations.

  Traceback (most recent call last): File "C:\temp\temp.py", line 20, in listObj.append(< AttributeError: 'dict' object has no attribute 'append'

To fix this error, be mindful of what JSON structure you are reading from the JSON file.

Источник

Чтение и запись в файл JSON-объекта

Эта статья научит вас парсить данные из JSON. Также вы узнаете, как читать и записывать в файл данные JSON.

За последние 5-10 лет формат JSON был одним из самых популярных способов сериализации данных (если не самым популярным). Особенно в веб-разработке. С этим форматом вы столкнетесь при работе с REST API, конфигурациями приложений или базами данных.

Несомненно, знать принципы работы JSON — очень важно. В какой-то момент вы обязательно с ним встретитесь. Возможно, вы захотите узнать, как читать и записывать JSON в файл. Все эти действия — очень простые. В этом вы убедитесь, разобрав следующие примеры.

Запись JSON в файл

Самый простой способ записать JSON в файл — использовать словарь. Они могут хранить вложенные словари, массивы, булевы значения и другие типы данных вроде целых чисел и строк. Более детальный список поддерживаемых типов данных можно найти здесь.

Во встроенной библиотеке json есть «волшебный» метод, который позволяет конвертировать словари в сериализованную JSON-строку.

import json data = <> data['people'] = [] data['people'].append(< 'name': 'Scott', 'website': 'pythonist.ru', 'from': 'Nebraska' >) data['people'].append(< 'name': 'Larry', 'website': 'pythonist.ru', 'from': 'Michigan' >) data['people'].append(< 'name': 'Tim', 'website': 'pythonist.ru', 'from': 'Alabama' >) with open('data.txt', 'w') as outfile: json.dump(data, outfile)

После импорта библиотеки json мы объявляем несколько словарей и наполняем их данными. Самая важная часть — в конце программы. Здесь мы используем оператор with , чтобы открыть файл. После этого мы используем метод json.dump , чтобы записать наши словари в файл.

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

Стоит упомянуть и о вариации метода json.dump — json.dumps . Этот метод позволяет вернуть JSON-строку, а не записывать ее в файл. Это может быть полезно, если вы хотите изменить JSON-строку. (например, зашифровать)

Чтение JSON из файла

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

import json with open('data.txt') as json_file: data = json.load(json_file) for p in data['people']: print('Name: ' + p['name']) print('Website: ' + p['website']) print('From: ' + p['from']) print('')

json.load — очень важный метод, запомните его. С его помощью происходит чтение файла, парс JSON-данных. После этого все данные записываются в словарь и возвращаются вам.

Как и у json.dump , у json.load есть дополнительный метод. Он позволяет работать со строками напрямую, ведь чаще всего у вас не будет файлоподобного объекта, содержащего JSON. Как вы уже догадались, называется он json.loads . Допустим, вы вызываете конечную точку REST с помощью GET, который возвращает строку. Ее мы и можем напрямую передать в json.loads .

Параметры

При сериализации данных в JSON могут возникнуть проблемы. Например, его будет не очень удобно читать, ведь удаляются все пробелы. В большинстве случаев этот вариант вполне хорош, но порой нужно внести небольшие изменения. К примеру, добавить пробелы, чтобы JSON было удобнее читать. У json.load и json.dump есть несколько параметров, которые дают необходимую гибкость. О некоторых из них мы и поговорим.

Pretty-Printing

Сделать JSON более удобочитаемым (pretty-printing) — очень просто. Нужно лишь передать целое число в параметр indent :

import json data = <'people':[<'name': 'Scott', 'website': 'pythonist.ru', 'from': 'Nebraska'>]> json.dumps(data, indent=4) < "people": [ < "website": "pythonist.ru", "from": "Nebraska", "name": "Scott" >] >

Это довольно полезно. Особенно если вам часто приходится читать JSON во время работы. Также вы можете использовать использовать команду json.tool прямо в командной строке. Если вы хотите удобочитаемый JSON, наберите в командной строке следующий код:

Сортировка

В JSON объект определяется следующим образом:

Объект — это неупорядоченный набор пар ключ/значение.

То есть, порядок не гарантируется. Но навести его реально. Сделать это можно с помощью передачи True в параметр sort_keys в методах json.dump или json.dumps .

import json data = <'people':[<'name': 'Scott', 'website': 'pythonist.ru', 'from': 'Nebraska'>]> json.dumps(data, sort_keys=True, indent=4) < "people": [ < "from": "Nebraska", "name": "Scott", "website": "pythonist.ru" >] >

ASCII-текст

По умолчанию json.dump проверяет, имеет ли ваш текст в словаре кодировку ASCII. Если присутствуют символы, отличные от ASCII, они автоматически экранируются. Это показано в следующем примере:

import json data = jstr = json.dumps(data, indent=4) print(jstr)

Но это не всегда приемлемо. Во многих случаях вы бы хотели сохранить символы Unicode нетронутыми. Для этого нужно передать в параметр ensure_ascii значение False .

jstr = json.dumps(data, ensure_ascii=False, indent=4) print(jstr)

Источник

Оцените статью