Python json чтение из файла

Работа с файлами в формате JSON#

JSON (JavaScript Object Notation) — это текстовый формат для хранения и обмена данными.

JSON по синтаксису очень похож на Python и достаточно удобен для восприятия.

Как и в случае с CSV, в Python есть модуль, который позволяет легко записывать и читать данные в формате JSON.

Чтение#

 "access": [ "switchport mode access", "switchport access vlan", "switchport nonegotiate", "spanning-tree portfast", "spanning-tree bpduguard enable" ], "trunk": [ "switchport trunk encapsulation dot1q", "switchport mode trunk", "switchport trunk native vlan 999", "switchport trunk allowed vlan" ] > 

Для чтения в модуле json есть два метода:

  • json.load — метод считывает файл в формате JSON и возвращает объекты Python
  • json.loads — метод считывает строку в формате JSON и возвращает объекты Python

json.load #

Чтение файла в формате JSON в объект Python (файл json_read_load.py):

import json with open('sw_templates.json') as f: templates = json.load(f) print(templates) for section, commands in templates.items(): print(section) print('\n'.join(commands)) 
$ python json_read_load.py access switchport mode access switchport access vlan switchport nonegotiate spanning-tree portfast spanning-tree bpduguard enable trunk switchport trunk encapsulation dot1q switchport mode trunk switchport trunk native vlan 999 switchport trunk allowed vlan

json.loads #

Считывание строки в формате JSON в объект Python (файл json_read_loads.py):

import json with open('sw_templates.json') as f: file_content = f.read() templates = json.loads(file_content) print(templates) for section, commands in templates.items(): print(section) print('\n'.join(commands)) 

Результат будет аналогичен предыдущему выводу.

Запись#

Запись файла в формате JSON также осуществляется достаточно легко.

Для записи информации в формате JSON в модуле json также два метода:

  • json.dump — метод записывает объект Python в файл в формате JSON
  • json.dumps — метод возвращает строку в формате JSON

json.dumps #

Преобразование объекта в строку в формате JSON (json_write_dumps.py):

import json trunk_template = [ 'switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan' ] access_template = [ 'switchport mode access', 'switchport access vlan', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable' ] to_json = 'trunk': trunk_template, 'access': access_template> with open('sw_templates.json', 'w') as f: f.write(json.dumps(to_json)) with open('sw_templates.json') as f: print(f.read()) 

Метод json.dumps подходит для ситуаций, когда надо вернуть строку в формате JSON. Например, чтобы передать ее API.

json.dump #

Запись объекта Python в файл в формате JSON (файл json_write_dump.py):

import json trunk_template = [ 'switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan' ] access_template = [ 'switchport mode access', 'switchport access vlan', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable' ] to_json = 'trunk': trunk_template, 'access': access_template> with open('sw_templates.json', 'w') as f: json.dump(to_json, f) with open('sw_templates.json') as f: print(f.read()) 

Когда нужно записать информацию в формате JSON в файл, лучше использовать метод dump.

Дополнительные параметры методов записи#

Методам dump и dumps можно передавать дополнительные параметры для управления форматом вывода.

По умолчанию эти методы записывают информацию в компактном представлении. Как правило, когда данные используются другими программами, визуальное представление данных не важно. Если же данные в файле нужно будет считать человеку, такой формат не очень удобно воспринимать.

К счастью, модуль json позволяет управлять подобными вещами.

Передав дополнительные параметры методу dump (или методу dumps), можно получить более удобный для чтения вывод (файл json_write_indent.py):

import json trunk_template = [ 'switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan' ] access_template = [ 'switchport mode access', 'switchport access vlan', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable' ] to_json = 'trunk': trunk_template, 'access': access_template> with open('sw_templates.json', 'w') as f: json.dump(to_json, f, sort_keys=True, indent=2) with open('sw_templates.json') as f: print(f.read()) 

Теперь содержимое файла sw_templates.json выглядит так:

 "access": [ "switchport mode access", "switchport access vlan", "switchport nonegotiate", "spanning-tree portfast", "spanning-tree bpduguard enable" ], "trunk": [ "switchport trunk encapsulation dot1q", "switchport mode trunk", "switchport trunk native vlan 999", "switchport trunk allowed vlan" ] > 

Изменение типа данных#

Еще один важный аспект преобразования данных в формат JSON: данные не всегда будут того же типа, что исходные данные в Python.

Например, кортежи при записи в JSON превращаются в списки:

In [1]: import json In [2]: trunk_template = ('switchport trunk encapsulation dot1q', . 'switchport mode trunk', . 'switchport trunk native vlan 999', . 'switchport trunk allowed vlan') In [3]: print(type(trunk_template)) In [4]: with open('trunk_template.json', 'w') as f: . json.dump(trunk_template, f, sort_keys=True, indent=2) . In [5]: cat trunk_template.json [ "switchport trunk encapsulation dot1q", "switchport mode trunk", "switchport trunk native vlan 999", "switchport trunk allowed vlan" ] In [6]: templates = json.load(open('trunk_template.json')) In [7]: type(templates) Out[7]: list In [8]: print(templates) ['switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan']

Так происходит из-за того, что в JSON используются другие типы данных и не для всех типов данных Python есть соответствия.

Таблица конвертации данных Python в JSON:

Источник

Как читать JSON-файл в Python?

Как читать JSON-файл в Python

Как читать JSON-файл в Python

Привет всем! Сегодня мы попробуем разобраться: что такое JSON и как читать JSON-файл в Python?

Для начала — немного фактов:

  • JSON расшифровывается как JavaScript Object Notation
  • Это формат обмена данными, в котором вы можете передавать данные с клиента на сервер и с сервера на клиент
  • Он также используется для связи между приложениями
  • JSON чрезвычайно важен для разработки приложений, особенно когда вы работаете с API Rest
  • Он основан на подмножестве Java Script
  • Это легко читать и писать

С теорией познакомились, а теперь узнаем основные правила синтаксиса при работе с JSON-форматом:

Обычно в обучалках рассказывают о коллективе с данными по зарплате, месту проживания и все такое прочее. Не будем нарушать традицию, и представим себе коллектив, состоящий из 5 сотрудников: Вася, Саша, Петя, Даша, Маша. Каждый сотрудник получает определенную зарплату, а значит — мы можем составить свой JSON-файл (назовем файл personal.json), который и будет представлять собой список сотрудников + их зарплату:

{ "personal" : [ { "name" : "Вася" , "salary" : 5000 } , { "name" : "Саша" , "salary" : 6000 } , { "name" : "Петя" , "salary" : 9000 } , { "name" : "Даша" , "salary" : 10000 }, { "name" : "Маша" , "salary" : 11000 } ] }

как видно — поле name — отвечает за имя сотрудника, а поле salary — за уровень зарплаты, а вот само название этого массива данных — personal (указывается в самом верху). Файл с данными у нас есть, но как его читать? Для этого посмотрим на код ниже:
import json #Подключаем библиотеку, отвечающую за работу с JSON

with open(‘personal.json’, ‘r’, encoding=’utf-8′) as f: #открываем файл personal.json и указываем его кодировку — что бы можно было работать с русскими буквами
text = json.load(f) #загоняем в переменную все, что получилось в результате работы библиотеки
print(text) #выводим результат на экран

Согласитесь — читать и разбирать подобные данные крайне сложно. Для упрощения работы в подобном случае часто используют библиотеку pprint, которая окультуривает выдачу в подобных случаях. В этом случае наш код будет выглядеть так:

import json #подключили библиотеку для работы с json
from pprint import pprint #подключили Pprint для красоты выдачи текста
with open('personal.json', 'r', encoding='utf-8') as f: #открыли файл с данными
text = json.load(f) #загнали все, что получилось в переменную
pprint(text) #вывели результат на экран

В результате выдача выглядит следующим образом:

{'personal': [{'name': 'Вася', 'salary': 5000},

А теперь выведем данные в чистом виде — имя сотрудника + зарплата. Тогда код буде выглядеть так:

import json #Подключили библиотеку
with open('personal.json', 'r', encoding='utf-8') as f: #открыли файл
text = json.load(f) #загнали все из файла в переменную
print(text) #вывели результат на экран
for txt in text['personal']: #создали цикл, который будет работать построчно
print(txt['name'], ':', txt['salary']) #и выводим на экран все, что в значении ключей name и salary

Собственно … можно было бы сказать что все, на сегодня хватит, но в завершении расскажу о том, как читать не файлы json, а строки. Например, у нас будет json-строка:
stroke = ‘’
Если мы попробуем вывести ее на экран, то получим:
— что в целом доносит суть, но не соответствует правилам 🙂 Для вывода json-строки используется функция loads. В виде кода это выглядит следующим образом:

import json #подключаем библиотеку для работы с json
stroke_s = json.loads(stroke) #загоняем в переменную результат чтения json-строки
print(stroke_s) #выводим результат на экран

На этом — все 🙂 Спасибо за внимание! И да — как записывать в json-файл мы разберемся чуть позднее 🙂
Есть вопросы? Задавайте на почту, или пишите в Телеграм 🙂

UPD: видео подоспело 🙂

UPD: А вот тут доступен текст о том, как удалить запись из json-файла. Вдруг пригодится?

Источник

Интерпретация JSON в Python – как читать файлы JSON

img

JSON (JavaScript Object Notation – нотация объектов JavaScript) – это популярный способ структурирования данных. Он используется для обмена информацией между веб-приложением и сервером. Но как прочитать файл JSON в Python?

В этой статье я покажу вам, как использовать методы json.loads() и json.load() для интерпретации (или как еще говорят парсинга) и чтения файлов и строк JSON.

Синтаксис JSON

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

Вот пример данных JSON с данными организации:

Как парсить строки JSON в Python

Python имеет встроенный модуль, который позволяет работать с данными в формате JSON. Вам необходимо будет импортировать модуль json .

Если вам необходимо проинтерпретировать строку JSON, возвращающую словарь, то вы можете воспользоваться методом json.loads() .

import json # assigns a JSON string to a variable called jess jess = '' # parses the data and assigns it to a variable called jess_dict jess_dict = json.loads(jess) # Printed output: print(jess_dict)

Как парсить и читать файлы JSON в Python

В данном примере мы имеем файл в формате JSON с именем fcc.json , который содержит те же данные, что и ранее, касающиеся курсов, которые предлагает сайт.

Если вы хотите прочитать этот файл, то для начала вам нужно использовать встроенную в Python функцию open() с режимом чтения. Мы используем ключевое слово with , чтобы убедиться, что файл закрыт.

with open('fcc.json', 'r') as fcc_file:

Если файл не может быть открыт, то мы получим ошибку OSError . Это пример ошибки «FileNotFoundError» при опечатке в имени файла fcc.json .

FileNotFoundError

Затем мы можем проинтерпретировать файл, используя метод json.load() и присвоить его переменной с именем fcc_data .

fcc_data = json.load(fcc_file)

И в конце мы должны напечатать результат.

Вот так будет выглядеть полный код:

import json with open('fcc.json', 'r') as fcc_file: fcc_data = json.load(fcc_file) print(fcc_data)

Как красиво напечатать данные JSON в Python

Если мы посмотрим на то, как печатаются данные, то увидим, что все данные JSON печатаются в одной строке.

Данные JSON

Однако такой формат вывода может быть затруднительным для чтения. И чтобы это исправить, мы можем реализовать метод json.dumps() с параметром indent (отступ).

В данном примере мы сделаем отступ в 4 пробела и будем печатать данные в более удобном для чтения формате.

print(json.dumps(fcc_data, indent=4))

indent

Также мы можем отсортировать ключи в алфавитном порядке, используя параметр sort_keys и установив его значение на True .

print(json.dumps(fcc_data, indent=4, sort_keys=True))

sort_keys

Заключение

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

Если вам необходимо проинтерпретировать строку JSON, которая возвращает словарь, то вы можете использовать метод json.loads() .

Если вам необходимо проинтерпретировать файл JSON, который возвращает словарь, то вы можете использовать метод json.load() .

Источник

Читайте также:  Что такое php extensions
Оцените статью