python을 사용하면서 argparse를 사용해야할 일이 많이 있다.
그 중에서도 type을 설정시에 bool 타입을 선언하는 방법에 대해 작성하려고 한다.
예전부터 썼는데 요즘 안쓰다보니 까먹어서 기록
import argparse
def parse_args():
parser = argparse.ArgumentParser(description='Preprocess data input params')
parser.add_argument("--path", required=False, type=str, default=None, help="Data path")
"""이런식으로 먼저 true에 대한 리스트를 정의해서 argument로 들어오는
것들 중에 true_false_list 없는 것들이 들어올 경우 false가 됨 """
true_false_list = ['true', 'yes', "1", 't','y']
parser.add_argument("--tsv_save",
type= lambda s : s.lower() in true_false_list,
required=False, default=True,
help="TSV save : True or False (e.g true,y, 1 | false, n, 0)")
parser.add_argument("--integrate",
type= lambda s : s.lower() in true_false_list,
required=False, default=True,
help="integrate json format : True or False (e.g true,y, 1 | false, n, 0)")
args = parser.parse_args()
return args
여기서 더 생각해봐야 할점은 true_false_list 리스트에 없는데 프로그램을 사용하는 사용자가 다른 형식에 true의 문자를 argument로 넣을 수도 있다는 건데......