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

Парсинг аргумента Python с уровнем журнала и конфигурации файл

Используя PARSE_KNOWN_ARGS (), чтобы установить уровень корневого журнала и значения по умолчанию по умолчанию из конфигурации … Теги с Python.

Использование parse_known_args () Чтобы установить уровень корневого журнала и значений по умолчанию по умолчанию из файла конфигурации перед анализом основных ARGS.

Предположим, вы стучите простую утилиту командной строки в Python, которая имеет следующие требования:

  1. Уровень корневого журнала может быть установлен с аргументом командной строки
  2. Конфигурация – При желании Читайте из внешнего файла
  3. Аргументы командной строки имеют приоритет за файлом конфигурации

argparse. ArgumentParser класс включает в себя parse_known_args () Способ, который позволяет постепенно разбирать аргументы командной строки, такие, что вы можете настроить, как проанализированы последующие аргументы.

Установите уровень журнала из аргумента командной строки

Корневой регистратор должен быть настроен до Есть какой-либо выход. Если приспособление аргумента будет выполнять работу, которые могут или должны создавать сообщения журнала, но вы хотите, чтобы уровень журнала был установлен из проанализированных аргументов, используйте parse_known_args () в анализе и установить уровень журнала сначала. Затем продолжайте остальные аргументы.

Кроме того, я вообще поклонник использования Регистрация файлов конфигурации Чтобы настроить более надежную регистрацию для приложений Python. Однако для быстрого простых сценариев командной строки мне нравится простота этого подхода.

Разбор по умолчанию от файла конфигурации

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

Предположим, что файл конфигурации содержит:

[options]
option1=config value
option2=config value

То, как это работает, это значения по умолчанию для последующих аргументов командной строки определены в словаре с именем по умолчанию вместо того, чтобы использовать дефолт Ключевое слово аргумент с add_argument () Отказ Тогда parse_known_args () используется для анализа файла файла конфигурации из аргументов командной строки. Если он присутствует, то он считывает значения из конфигурации и обновляет по умолчанию толковый словарь. Затем эти по умолчанию применяются к оставшимся аргументам командной строки с set_defaults () метод.

Положить его вместе

Смотрите Полный example.py Исходный код который сочетает в себе оба вышеуказанных метода.

Переопределить уровень журнала по умолчанию:

$ ./example.py -l DEBUG
INFO:__main__:Log level set: DEBUG
INFO:__main__:Option 1: default value
INFO:__main__:Option 2: default value

Читайте значения из файла конфигурации:

$ ./example.py -l DEBUG -c example.conf
INFO:__main__:Log level set: DEBUG
INFO:__main__:Loading configuration: example.conf
INFO:__main__:Option 1: config value
INFO:__main__:Option 2: config value

Переопределить значения с аргументами командной строки:

$ ./example.py -l DEBUG -c example.conf -1 "cli value"
INFO:__main__:Log level set: DEBUG
INFO:__main__:Loading configuration: example.conf
INFO:__main__:Option 1: cli value
INFO:__main__:Option 2: config value

Оригинал: “https://dev.to/micahcarrick/python-argument-parsing-with-log-level-and-config-file-1d6p”