Python

Преобразование файлов INI в формат JSON в Python

Мы используем формат файла INI для хранения файлов конфигурации. С другой стороны, файлы JSON обычно используются для передачи данных между двумя программными системами. В этой статье обсуждается, как преобразовать файл INI в строку или файл JSON в Python.

Что такое формат файла INI?

Формат файла INI — это простой текстовый формат для хранения данных конфигурации в текстовом файле.

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

Формат файла INI удобочитаем и прост для анализа. Это делает его популярным выбором для хранения и управления настройками приложений, предпочтениями и другими данными конфигурации.

Чтобы понять структуру файла INI, рассмотрим следующий пример файла.

[employee]
name=John Doe
age=35

[job]
title=Software Engineer
department=IT
years_of_experience=10

[address]
street=123 Main St.
city=San Francisco
state=CA
zip=94102

Приведенный выше INI-файл содержит информацию об имени сотрудника, возрасте, должности, отделе, стаже работы и адресе. Здесь мы разделили информацию на три раздела, а именно "employee", "job"и "address". Вы можете заметить, что мы обозначили разделы заголовками разделов в квадратных скобках.

  • "employee" раздел содержит две пары ключ-значение, т.е. "name"и "age".
  • в "job" мы определили три пары ключ-значение для хранения "title", "department"и "years_of_experience" сотрудника.
  • "address" раздел содержит четыре пары ключ-значение, т.е. "street", "city", "state"и "zip" указать адрес сотрудника.

Каждый файл INI имеет формат, описанный выше. Вы можете определить параметры конфигурации, используя разделы и пары ключ-значение для любой программной системы.

Что такое формат файла JSON?

JSON (нотация объектов JavaScript) — это облегченный формат обмена данными. Это текстовый формат, и мы часто используем его для передачи данных между программными приложениями.

Формат JSON также состоит из пар ключ-значение. Здесь ключ всегда является строкой, а значение может быть любого типа JSON, включая строку, число, логическое значение, null, массив или другой объект JSON. Мы заключаем объекты JSON в фигурные скобки {}, а отдельные пары ключ-значение — в запятые. Структурно объект JSON похож на словарь Python.

Мы можем представить данные, показанные в предыдущем примере, в формате файла JSON, как показано ниже.

{
  "employee": {
    "name": "John Doe",
    "age": "35"
  },
  "job": {
    "title": "Software Engineer",
    "department": "IT",
    "years_of_experience": "10"
  },
  "address": {
    "street": "123 Main St.",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94102"
  }
}

Теперь давайте обсудим, как преобразовать файл INI в строку или файл JSON в Python.

Преобразование файла INI в строку JSON

Чтобы преобразовать файл INI в строку JSON, мы будем использовать модуль json и модуль configparser в Python. Предположим, что у нас есть следующий INI-файл.

Входной файл JSON
Входной файл JSON

Чтобы преобразовать этот INI-файл в строку JSON, мы будем использовать следующие шаги.

  • Сначала мы создадим пустой ConfigParser объект с помощью ConfigParser() функция, определенная в модуле configparser. Мы будем использовать этот объект для чтения файла INI.
  • Далее мы откроем INI-файл в режиме чтения с помощью open() функция. open() функция принимает имя файла в качестве первого входного аргумента и литерал Python “r” в качестве второго входного аргумента. После выполнения возвращает указатель на файл.
  • Теперь мы прочитаем ini-файл в ConfigParser объект с помощью read_file() метод. read_file() метод при вызове на ConfigParser объект, принимает указатель файла на ini-файл в качестве входного аргумента и загружает данные в ConfigParser объект.
  • Как только мы получим ConfigParser объект с данными, мы преобразуем данные в словарь Python. Для этого мы будем использовать sections() метод и items() метод, определенный в модуле configparser.
  • sections() метод при вызове на ConfigParser объект, возвращает список, содержащий все имена разделов в ConfigParser объект. items() метод при вызове на ConfigParser Объект принимает имя раздела в качестве входного аргумента. После выполнения он возвращает все пары ключ-значение в определенном разделе в виде списка кортежей.
  • Чтобы преобразовать ConfigParser объект в словарь Python, мы сначала создадим пустой словарь. Затем мы получим все имена разделов в ConfigParser объект с помощью sections() метод.
  • После этого мы перебираем имена разделов и собираем пары ключ-значение в конкретном разделе, используя items() метод в виде списка кортежей. Здесь мы также преобразуем список кортежей в словарь Python, используя метод dict() функция. Наконец, мы добавим имя раздела в качестве ключа и словарь, содержащий пары ключ-значение, в качестве связанного с ним значения в словарь, который мы создали до получения имен разделов.
  • После выполнения предыдущего шага мы получим содержимое ini-файла в словаре Python. Далее мы преобразуем словарь в объект json, используя dumps() метод, определенный в модуле json. dumps() Метод принимает словарь Python в качестве входного аргумента и возвращает строку JSON, содержащую данные из словаря.

Вы можете наблюдать все шаги в следующем примере.

import configparser
import json
config_object = configparser.ConfigParser()
file =open("employee.ini","r")
config_object.read_file(file)
output_dict=dict()
sections=config_object.sections()
for section in sections:
    items=config_object.items(section)
    output_dict[section]=dict(items)

json_string=json.dumps(output_dict)
print("The output JSON string is:")
print(json_string)
file.close()

Выход:

The output JSON string is:
{"employee": {"name": "John Doe", "age": "35"}, "job": {"title": "Software Engineer", "department": "IT", "years_of_experience": "10"}, "address": {"street": "123 Main St.", "city": "San Francisco", "state": "CA", "zip": "94102"}}

В приведенном выше выводе вы можете заметить, что мы преобразовали файл INI в строку JSON.

Преобразование файла INI в файл JSON в Python

Мы также можем преобразовать файл INI в файл JSON вместо строки. Для этого мы будем использовать dump() метод вместо dumps() метод после создания словаря из ConfigParser объект.

  • Чтобы преобразовать файл INI в файл JSON, мы сначала преобразуем файл ini в словарь Python, как показано в предыдущем примере.
  • Затем мы откроем файл JSON в режиме записи, используя open() функция. После выполнения, open() функция вернет указатель на файл.
  • Далее мы будем использовать dump() способ записи данных в файл json. dump() Метод принимает словарь Python в качестве первого аргумента и указатель на файл json в качестве второго входного аргумента. После выполнения он записывает объект json в файл.
  • Наконец, мы закроем файл json, используя close() метод.

После выполнения этих шагов вы можете легко преобразовать файл INI в файл JSON в Python. Вы можете наблюдать это на следующем примере.

import configparser
import json
config_object = configparser.ConfigParser()
file =open("employee.ini","r")
config_object.read_file(file)
output_dict=dict()
sections=config_object.sections()
for section in sections:
    items=config_object.items(section)
    output_dict[section]=dict(items)

json_file =open("employee.json","w")
json.dump(output_dict,json_file)
json_file.close()
file.close()

Выходной файл JSON выглядит следующим образом.

Выходной JSON-файл
Выходной JSON-файл

Заключение

В этой статье мы обсудили, как преобразовать файл INI в формат JSON в Python. Чтобы узнать больше о преобразовании файлов, вы можете прочитать эту статью о том, как преобразовать XML в формат INI в Python. Вам также может понравиться эта статья о пользовательских декодерах JSON в Python.

Надеюсь, вам понравилось читать эту статью. Следите за информативными статьями.

Счастливого обучения!

Рекомендуемое обучение Python

Курс: Python 3 для начинающих

Более 15 часов видеоконтента с инструкциями для начинающих. Узнайте, как создавать приложения для реального мира, и освойте основы.


Ссылка на источник

Похожие статьи

Кнопка «Наверх»