Преобразование файлов 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-файл.

Чтобы преобразовать этот 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 выглядит следующим образом.

Заключение
В этой статье мы обсудили, как преобразовать файл INI в формат JSON в Python. Чтобы узнать больше о преобразовании файлов, вы можете прочитать эту статью о том, как преобразовать XML в формат INI в Python. Вам также может понравиться эта статья о пользовательских декодерах JSON в Python.
Надеюсь, вам понравилось читать эту статью. Следите за информативными статьями.
Счастливого обучения!
Связанный
Рекомендуемое обучение Python
Курс: Python 3 для начинающих
Более 15 часов видеоконтента с инструкциями для начинающих. Узнайте, как создавать приложения для реального мира, и освойте основы.
Ссылка на источник