Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Стандартная библиотека configparser в Python для управления ini-файлами
ini-файлы (файлы конфигурации) были когда-то очень популярными. В них обычно хранили разные настройки для той или иной программы. Очень простая текстовая структура позволяла редактировать их в простом текстовом редакторе. С другой стороны и программное их управление тоже не составляет особого труда. Я когда-то даже писал для себя библиотеку управления такими файлами, наверное она даже еще сохранилась. Но сегодня разговор о том, что в Python есть специальная библиотека configparser, которая делает работу с ini-файлами совсем уж простой. При желании вы всегда можете расширить функциональность, путём добавления своих методов или замены существующих.
Не буду останавливаться на структуре ini-файлов. Замечу только, он состоит из секций и опций.
Кстати ini-файлы до сих пор используются некоторыми программами в силу их простоты и удобства.
configparser. Создание ini-файла
Библиотека configparser подключается обычным образом по средством оператора import. Основные действия осуществляются с объектом класса 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.