Рубрики
Без рубрики

Python ConfigParser

Python ConfigParser, Python ConfigParser Файлы Пример, Python ConfigParser Пример, Python ConfigParser Вложенные разделы, подразделы, файл конфигурации Python Лучшая практика, список Confice Python, Python3 ConfigParser Пример Учебности.

Автор оригинала: Pankaj Kumar.

Python ConfigParser

Модуль ConfigParser Python является чрезвычайно важным, когда речь идет о создании настраиваемых приложений.

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

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

Что CAN Config файл включает в себя?

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

  • Разделы файла конфигурации могут быть идентифицированы, имея строки, начиная с [и заканчивая]. Между квадратными скобками мы можем поставить имя раздела, которое может быть любым символом, кроме квадратного кронштейна.
  • Линии, начиная с ; или # рассматриваются как комментарии и не доступны программно.
  • Значения разделены = или : Отказ

Давайте посмотрим на файл конфигурации образец, который хорошо будет очистить вещи.

# A comment which can contain anything.
[database_config]
url = https://localhost:3306/mysql/
username = root
; Consider hashing this password rather than
; keeping it as plain-text here
password = MY_PASSWORD

Смотрите, насколько легко было! Значения, которые могут быть использованы программно в приведенных выше файлах, являются URL, имя пользователя и пароль.

Python Config файлы

Давайте введем эти концепции в использовании с некоторыми фрагментами кода.

Используя файлы конфигурации

Мы будем создавать образец конфигурации файла, который выглядит так:

# A comment which can contain anything.
[database_config]
url = https://localhost:3306/mysql/
username = root
; Consider hashing this password rather than
; keeping it as plain-text here
password = MY_PASSWORD

Сделайте этот файл и назовите его database.config И держать его в том же каталоге, что и программа, которую мы пишем рядом:

from configparser import ConfigParser

parser = ConfigParser()
parser.read('database.config')

print(parser.get('database_config', 'url'))

Здесь мы впервые найду раздел, а затем продолжаем предоставлять точный ключ, который нам нужен. Это даже хорошо с точки зрения читаемости кода. Давайте посмотрим на вывод этой программы:

Это было довольно просто на самом деле.

Проверка, если существует ли файл конфигурации

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

Давайте посмотрим фрагмент кода:

from configparser import ConfigParser
import glob

config_parser = ConfigParser()

files_to_find = ['database.config', 'does-not-exist.config']

found_files = config_parser.read(files_to_find)
missing_files = set(files_to_find) - set(found_files)

print('Found config files:  ', sorted(found_files))
print('Missing files     :  ', sorted(missing_files))

Давайте посмотрим на вывод этой программы:

Итализация по всем значениям

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

Давайте посмотрим, как фрагмент кода о том, как это можно сделать:

from configparser import ConfigParser

config_parser = ConfigParser()
config_parser.read('database.config')

for section_name in config_parser.sections():
    print('Section:', section_name)
    print('  Options:', config_parser.options(section_name))
    for key, value in config_parser.items(section_name):
        print('  {} = {}'.format(key, value))
    print()

Давайте посмотрим на вывод этой программы:

Проверка, если присутствует раздел

Разве не было бы лучше, если бы мы могли бы просто предоставить ключ раздела и проверить, присутствует ли раздел или нет? Это возможно, и это то, что мы сделаем в следующем фрагменте кода:

from configparser import ConfigParser

config_parser = ConfigParser()
config_parser.read('database.configdatabase.config')

for key in ['url', 'cluster-address', 'database_config']:
    print('{:<12}: {}'.format(key, config_parser.has_section(key)))

Давайте посмотрим на вывод этой программы:

Проверка, если значение присутствует

Теперь давайте напрямую проверим, присутствует ли значение или нет. Давайте посмотрим, как фрагмент кода о том, как это можно сделать:

from configparser import ConfigParser

config_parser = ConfigParser()
config_parser.read('database.config')

find_sections = ['cluster-address', 'database_config']
find_options = ['url', 'some-option']

for section in find_sections:
    has_section = config_parser.has_section(section)
    print('{} section exists: {}'.format(section, has_section))
    for key in find_options:
        has_option = config_parser.has_option(section, key)
        print('{}.{:<12}  : {}'.format(section, key, has_option))
    print()

Давайте посмотрим на вывод этой программы:

Заключение

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

Ссылка: API док