1K подписчиков

Программирование на языке Python. Стандартная библиотека configparser. Управление ini-файлами на Python

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Стандартная библиотека configparser в Python для управления ini-файлами

ini-файлы (файлы конфигурации) были когда-то очень популярными. В них обычно хранили разные настройки для той или иной программы. Очень простая текстовая структура позволяла редактировать их в простом текстовом редакторе. С другой стороны и программное их управление тоже не составляет особого труда. Я когда-то даже писал для себя библиотеку управления такими файлами, наверное она даже еще сохранилась. Но сегодня разговор о том, что в Python есть специальная библиотека configparser, которая делает работу с ini-файлами совсем уж простой. При желании вы всегда можете расширить функциональность, путём добавления своих методов или замены существующих.

Не буду останавливаться на структуре ini-файлов. Замечу только, он состоит из секций и опций.

Кстати ini-файлы до сих пор используются некоторыми программами в силу их простоты и удобства.

configparser. Создание ini-файла

Библиотека configparser подключается обычным образом. Основные действия осуществляются с объектом класса ConfigParser.

Ниже представлена программа, которая создаёт ini-файл.

Текст программы см. ниже
Текст программы см. ниже

Содержимое полученного файла

[Начальные значения]
скорость x = 100
скорость y = 100
x = 10
y = 20

[Данные]
фио = Пупкин Абрам Иванович
адрес = г. Первомайск, д. 45

Как видим объект, созданный из класса ConfigParser обладает двумя важными методами: add_section() - создание секции и set() - создание (изменение) опции в секции.

configparser. Редактирование ini-файла

Теперь посмотрим, отредактировать уже существующий ini-файл

текст программы см. ниже
текст программы см. ниже

В результате получаем файл

[Данные]
адрес = г. Первомайск, д. 45

Как видим, объект ConfigParser обладает очень простой системой методов, для управления ini-файлов.

configparser. Чтение ini-файла

Ну есть смысл ещё посмотреть как получить содержимое ini-файла в удобном для просмотра виде. Оказывается здесь всё просто и элегантно. Вообще библиотека элегантная, конечно.

Текст программы см. ниже
Текст программы см. ниже

Результат выполнения

Секция:  Начальные значения
Опция:  скорость x
Опция:  скорость y
Опция:  x
Опция:  y
Секция:  Данные
Опция:  фио
Опция:  адрес

Замечание
Один важный момент стоит отметить. Если в ini-файле есть более одной секции с одинаковым именем или более одной опции в секции с одинаковым именем, то возникает исключение. И вот здесь, конечно, вопрос: а что с этим делать. При создании объекта ConfigParser
можно указать опцию strict=False. В результат (sic!) секции с одинаковым именем объединяются. Из опций с одинаковым именем в пределах секции (или объединённой секции) останется одна, последняя по счёту. Если теперь перезаписать файл конфигурации, то он будет иметь корректную структуру. Возможно вам не понравится такой алгоритм обработки файлов с не корректной структурой, ну придётся тогда писать свой вариант.

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Конфигурировали конфигурировали да не переконфигурировали
Конфигурировали конфигурировали да не переконфигурировали