728x90
configparser 를 통해 argument를 파싱하고 비슷한 것을 config.ini 에 넣어 두었다고 가정
이때 config.ini 를 먼저 읽어서 argument쪽에 넣고 argument를 다시 읽으면 되는데, 이때 문제가 parser가 초기화를 한다.
그래서 무식한 방법이지만 default 에 넣는 방식으로 다음과 같이 처리하면 된다.
이때 형변환 부분이 있을 수 있는데, 이 부분은 아직 고려 하지 않았다.
예제소스
test.py
import configparser
import argparse
def loadConfig(cfgfile):
my_cfg = configparser.RawConfigParser()
my_cfg.optionxform = str
my_cfg.read(cfgfile)
return my_cfg
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Deep Packet Clustering Manager.')
parser.add_argument('--cfgfile', required=False, type=str
, default="config.ini", help='config file')
parser.add_argument('--loglevel', required=False, type=str
, default='warning'
, help='Provide logging level. Example --loglevel debug, default=warning')
args = parser.parse_args()
my_cfg = loadConfig(args.cfgfile)
default_args_dict = { }
print("Before", args)
for cur_args in my_cfg['args']:
default_args_dict[cur_args] = my_cfg.get('args', cur_args)
parser.set_defaults(**default_args_dict)
# ini > option (input) overwrite
args = parser.parse_args()
print("After", args)
config.ini 샘플
[args]
loglevel=info
workdir=
실행결과
$ python test.py
Before Namespace(cfgfile='config.ini', loglevel='warning')
After Namespace(cfgfile='config.ini', loglevel='info', workdir='')
$ python test.py --loglevel='debug'
Before Namespace(cfgfile='config.ini', loglevel='debug')
After Namespace(cfgfile='config.ini', loglevel='debug', workdir='')
728x90
'IT > OS|Network|Script' 카테고리의 다른 글
node-red docker로 구축 및 nginx docker 연결 (0) | 2023.10.05 |
---|---|
jupyter lab 사용 시 기본 세팅 (1) | 2023.09.14 |
[AWK] Giga, Kilo, Mega 변환해서 보여주기 (0) | 2023.09.14 |
[Script] bash iconv로 디렉토리 내 파일들 cp949 to utf8변환 (0) | 2023.09.14 |
stdout 에 대한 timestamp 앞에 찍어주기 (0) | 2023.09.14 |