Использование parse_known_args () Чтобы установить уровень корневого журнала и значений по умолчанию по умолчанию из файла конфигурации перед анализом основных ARGS.
Предположим, вы стучите простую утилиту командной строки в Python, которая имеет следующие требования:
- Уровень корневого журнала может быть установлен с аргументом командной строки
- Конфигурация – При желании Читайте из внешнего файла
- Аргументы командной строки имеют приоритет за файлом конфигурации
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”