Python

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

Файлы INI в основном используются в качестве формата файлов для файлов конфигурации. В этой статье мы обсудим, как преобразовать словарь Python в INI-файл с помощью модуля configparser.

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

Формат INI, сокращение от «Формат инициализации», представляет собой простой формат текстового файла, используемый для хранения настроек конфигурации программных приложений. Он широко использовался на заре Windows и до сих пор используется в некоторых приложениях.

INI-файл состоит из разделов, каждый из которых содержит пары ключ-значение. Каждая пара ключ-значение записывается как "key=value" и отделяется знаком равенства (=). Разделы заключаются в квадратные скобки ([]), и каждая пара ключ-значение записывается с новой строки.

Например, рассмотрим следующий 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] Раздел содержит основную информацию о сотруднике, такую ​​как его имя и возраст.
  • [job] Раздел содержит информацию о работе сотрудника, включая его должность, отдел и многолетний опыт.
  • [address] Раздел содержит информацию об адресе сотрудника, включая адрес, город, штат и почтовый индекс.

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

В настоящее время файлы INI не очень популярны из-за невозможности хранить вложенные или сложные данные. Однако вполне возможно, что вам может понадобиться сохранить данные из словаря Python в файле INI для какой-либо цели. Давайте обсудим, как преобразовать словарь Python в формат файла INI.

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

Мы можем преобразовать словарь Python в файл INI с помощью модуля configparser. Однако мы должны иметь в виду, что мы можем использовать вложенные словари с одним и только одним уровнем вложенности. Это связано с тем, что файлы 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'}}

Приведенный выше словарь содержит три внешних ключа, т.е. 'employee', 'job'и 'address'. Мы будем использовать эти ключи как разделы в файле INI. Кроме того, мы будем использовать пары ключ-значение в словарях, связанных с этими ключами, в качестве пар ключ-значение в файле INI для каждого раздела.

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

  • Сначала мы создадим пустой ConfigParser объект с помощью ConfigParser() функция, определенная в модуле configparser.
  • Мы также откроем INI-файл в режиме записи, используя open() функция. open() функция принимает имя файла в качестве первого аргумента и литерал python “w” в качестве второго аргумента. После выполнения возвращает указатель на файл.
  • Далее мы добавим разделы в ConfigParser объект. Для этого мы будем использовать add_section() метод. add_section() Метод принимает имя раздела в качестве входного аргумента и добавляет его в ConfigParser объект.
  • Чтобы добавить разделы, мы сначала получим внешние ключи словаря, используя keys() метод. keys() Метод при вызове словаря возвращает список ключей. Мы пройдемся по списку ключей и добавим их как разделы в ConfigParser объект.
  • После добавления разделов нам нужно добавить поля для каждого раздела. Для этого мы будем использовать set() метод. set() метод при вызове на ConfigParser объект, принимает три входных аргумента. Первый аргумент — это имя раздела, второй аргумент — это имя поля, а третий входной аргумент — это значение поля. После выполнения добавляет поле в соответствующий раздел в ConfigParser объект.
  • Чтобы добавить имена полей в ConfigParser объект, мы будем использовать внешние ключи в словаре для доступа к внутренним словарям и перебирать пары ключ-значение. Для каждого раздела мы будем перебирать пары ключ-значение во внутреннем словаре и добавлять их в ConfigParser объект с помощью set() метод.
  • К этому моменту мы добавили все данные из словаря в ConfigParser объект. Чтобы сохранить ConfigParser объект в файл, мы будем вызывать write() метод на ConfigParser объект и передать указатель файла в качестве входного аргумента.
  • Наконец, мы закроем файл с помощью close() метод.

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

import configparser
file =open("employee1.ini","w")
config_object = configparser.ConfigParser()
myDict={'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'}}
sections=myDict.keys()
for section in sections:
    config_object.add_section(section)
for section in sections:
    inner_dict=myDict[section]
    fields=inner_dict.keys()
    for field in fields:
        value=inner_dict[field]
        config_object.set(section, field, str(value))
config_object.write(file)
file.close()

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

Вывод INI-файла из словаря
Вывод INI-файла из словаря

Код Python, используемый в приведенном выше примере, несколько неэффективен. Мы можем реализовать приведенную выше логику более эффективным способом, как показано ниже.

import configparser
file =open("employee1.ini","w")
config_object = configparser.ConfigParser()
myDict={'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'}}
for section, options in myDict.items():
    config_object.add_section(section)
    for key, value in options.items():
        config_object.set(section, key, str(value))
config_object.write(file)
file.close()

Вывод для этого кода будет таким же, как и для предыдущего кода.

Заключение

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

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

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

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

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

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


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

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

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