로그 수준 및 구성 파일을 사용한 Python 인수 구문 분석
parse_known_args()
를 사용하여 루트 로그 수준을 설정하고 기본 인수를 구문 분석하기 전에 구성 파일에서 기본값을 구문 분석합니다.다음 요구 사항이 있는 Python에서 간단한 명령줄 유틸리티를 실행한다고 가정합니다.
argparse.ArgumentParser
클래스에는 명령줄 인수를 점진적으로 구문 분석하여 후속 인수가 구문 분석되는 방법을 설정할 수 있는 parse_known_args()
메서드가 포함되어 있습니다.명령줄 인수에서 로그 수준 설정
출력이 있기 전에 루트 로거를 구성해야 합니다. 인수 구문 분석이 로그 메시지를 생성할 수 있거나 생성해야 하는 작업을 수행할 예정이지만 구문 분석 중인 인수에서 로그 수준을 설정하려면
parse_known_args()
를 사용하여 먼저 로그 수준을 구문 분석하고 설정합니다. 그런 다음 나머지 인수를 진행합니다.여담이지만 저는 일반적으로 logging config files을 사용하여 Python 애플리케이션에 대한 보다 강력한 로깅을 설정하는 것을 좋아합니다. 그러나 빠르고 간단한 명령줄 스크립트의 경우 이 접근 방식의 단순함이 마음에 듭니다.
구성 파일에서 기본값 구문 분석
유사한 기술을 사용하여 명령줄 인수에서 구성 파일 이름을 구문 분석한 다음 해당 구성 파일을 사용하여 구문 분석되는 나머지 인수의 기본값을 설정할 수 있습니다.
구성 파일에 다음이 포함된다고 가정합니다.
[options]
option1=config value
option2=config value
이것이 작동하는 방식은 후속 명령줄 인수의 기본값이 defaults
와 함께 default
키워드 인수를 사용하는 대신 add_argument()
라는 사전에 정의된다는 것입니다. 그런 다음 parse_known_args()
를 사용하여 명령줄 인수에서 구성 파일 이름을 구문 분석합니다. 존재하는 경우 구성에서 값을 읽고 defaults
사전을 업데이트합니다. 그런 다음 이러한 기본값은 set_defaults()
메서드를 사용하여 나머지 명령줄 인수에 적용됩니다.
<스크립트 id="gist-ltag"src="https://gist.github.com/MicahCarrick/e050648f4f41e47e3ea4d58f1ce5501a.js"/>
함께 넣어
위의 두 기술을 결합한 complete example.py source code을 참조하십시오.
기본 로그 수준 무시:
$ ./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
Reference
이 문제에 관하여(로그 수준 및 구성 파일을 사용한 Python 인수 구문 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/micahcarrick/python-argument-parsing-with-log-level-and-config-file-1d6p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)