본문 바로가기
프로그래밍/python

Python argparse.ArgumentParser()

by W.C. 2023. 4. 24.
728x90

python 실행 시 외부 파라미터를 받을 때 사용되는 library 이다.

실제로 일어 날지는 모르겠지만...

허용하지 않는 parameter 가 입력 되었을 경우

parser = argparse.ArgumentParser()
parser.add_argument("--file_path", "-f", help="sql file path")  # -f : sql 파일 및 경로를 파라미터로 받음
parser.add_argument("--parameters", "-p", help="sql parameters")  # -p : sql 파일 실행에 필요한 변수값을 파라미터로 받음
args = parser.parse_args()  # 파라미터 객체

위와 같이 일반적으로 코드를 돌릴 경우

-f, -p 파라미터 이외에 값이 들어 올 경우 에러가 난다.

→ Exception으로 빠지지도 않고 프로그램이 종료가 일어난다.

→ python3.9 부터는

argparse - Parser for command-line options, arguments and sub-commands - Python 3.10.5 documentation

custom error로 처리 할 수 있는데… 지금 사용중인 버젼이 3.8이라…

 

해결책

parser = argparse.ArgumentParser()
parser.add_argument("--file_path", "-f", help="sql file path")  # -f : sql 파일 및 경로를 파라미터로 받음
parser.add_argument("--parameters", "-p", help="sql parameters")  # -p : sql 파일 실행에 필요한 변수값을 파라미터로 받음
args, unknown = parser.parse_known_args()  # 파라미터 객체

위처럼 unknown으로 받으면 된다

그러면 프로세스 종료 없이 오류를 확인 할 수 있게 된다.


보통 일반적으로 프로그램을 호출하는 데 정의되어 있는 파라미터를 사용하도록 문서도 제공하고 사용방법을 제공했는데... 꼭 문서도 안 읽어보고 마음데로 예측하고 쓰는 사람들이 있다.

 

제발 좀 문서 좀 잘 보고 사용 합시다

일어나지 않을 것 이라고 믿은 나의 잘못이 크며 실제로 오류를 겪고 사람을 교육하는 것 보다 오류 방지 코드를 만드는 것이 효율적이라는 것을 또 한번 상기하게 되었다.