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

Article author: Andrei Olegovich

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

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: