데이터과학 삼학년

argparse 리스트(list), boolean(True or False) 를 파라미터로 받는 방법 본문

Python

argparse 리스트(list), boolean(True or False) 를 파라미터로 받는 방법

Dan-k 2020. 7. 9. 12:25
반응형

파이썬 파일을 실행시킬때 외부 파라미터를 받아서 실행시키는 것은 거의 모든 프로젝트에서 사용되고 있다.

 

파라미터에 스트링이나 integer, float은 자유롭게 받지만..

리스트를 받으려면 어떻게 해야할까?

 

아래 코드를 참고해서 사용하면 된다!!!!!!

list 자체를 string으로 받은 후에 ast.literal_eval 을 이용하여 list type으로 다시 만들어 주는 방법이다.

import argparse
import ast


def arg_as_list(s):
    v = ast.literal_eval(s)
    if type(v) is not list:
        raise argparse.ArgumentTypeError("Argument \"%s\" is not a list" % (s))
    return v


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '--info-columns',
        type=arg_as_list,
        default=[],
        help='List of info columns')
    
    args, _ = parser.parse_known_args()
    return args


def check_argument(args):
    print('info_columns : {}'.format(args.info_columns))
    

if __name__=='__main__':
    args = get_args()
    check_argument(args)

여기서

문자를 포함한 리스트를 인자로 넣을때는 escape string 을 피하기 위해 qoute 앞에 \을 달아 넣어 준다.

 

 

 

boolean 값인 True, False는 어떻게 받을 수 있을까?

 

아래 코드를 참고하자

import argparse


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--boolean-param", 
        type=lambda s: s.lower() in ['true', '1'])
    
    args, _ = parser.parse_known_args()
    return args


def check_argument(args):
    if args.boolean_param :
        print('boolean_param은 True 입니다.')

        
if __name__=='__main__':
    args = get_args()
    check_argument(args)

이 코드는 외부에서 받은 boolean_param이 진짜로 True 일 경우에 print하는 코드이다.

 

결과를 보면 외부에서 받은 파라미터를 boolean 값으로 잘 받은 것을 알 수 있다.

 

728x90
반응형
LIST
Comments