Автор оригинала: 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 док