configparser в Python

Содержание
Введение
Пример
Подключение к БД
Похожие статьи

Введение

Рассмотрим следующую ситуацию: несколько скриптов должны иметь возможность работать в разных режимах.

Этот режим можно задать в виде переменной в начале скрипта в каждом скрипте. В таком случае если режим изменился нужно поменять значение переменной в каждом файле.

Если таких скриптов много потребуется много ручных действий. Сократить их количество можно несколькими способами: с помощью переменных окружения, дополнительных скриптов выполняющих замену, настройкой IDE и созданием общего для всех конфигурационного файла.

В этой статье вы можете изучить пример применения библиотеки configparser для работы с конфигурационными файлами.

Пример

Рассморим файл settings.toml из которого нужно прочитать режим работы.

[general] mode=robot

project/ |-- config.py `-- settings.toml

Несмотря на то, что файлы находятся в одной директории я предпочитаю пользоваться os.path.dirname() чтобы задавать путь до settings.toml причины по которым я рекомендую такой подход можете изучить в статье « Python os.path»

# config.py import os from configparser import ConfigParser def get_mode( filename="settings.toml", section="general"): print("config.mode()") try: os.path.isfile(filename) print(f"file {filename} is found") except FileNotFoundError as e: print(e) # create a parser parser = ConfigParser() file_path = os.path.join(os.path.dirname(__file__), filename) print(parser.read(file_path)) if parser.has_section(section): params = parser.items(section) for param in params: if param[0] == "mode": mode = param[1] else: raise Exception(f"Section {section} not found in the {filename} file") return mode

Теперь во всех скриптах можно просто импортировать config и определять режим функцией get_mode() а в случае изменения режима - редактировать нужно только одно поле в settings.toml

import config mode = config.get_mode() if mode == "robot": def print(s: str): logger.info(s)

Конфиг для подключения к БД

В статье «Python и Postgres» вы можете изучить простой пример подключения к базе данных с помощью psycopg2

Учётные данные в этом примере хранятся в файле database.toml и читаются из него будем скриптом config.py на основе configparser а само подлючение реализуется другим скриптом pg_demo.py

С точки зрения применения configparser отличие от предыдущего примера в том, что читаются несколько параметров и результат записывается в словарь .

#!/usr/bin/python # config.py import os from configparser import ConfigParser def config(filename="database.toml", section="postgresql"): # create a parser parser = ConfigParser() file_path = os.path.join(os.path.dirname(__file__), filename) # read config file parser.read(file_path) # get section, default to postgresql db = {} if parser.has_section(section): params = parser.items(section) for param in params: db[param[0]] = param[1] else: raise Exception(f"Section {section} not found in the {filename} file") return db

Похожие статьи
Основы Python
Type Hints
__future__
configparser
Менеджер контекста
docstring
#!: Shebang
Объекты
Итерация
os
pathlib

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: