Python의 argparse 모듈은 명령줄 인자를 프로그램에 쉽게 파싱할 수 있게 해주는 유용한 표준 라이브러리입니다. 이 모듈을 사용하면 명령줄 옵션, 인자 및 서브 커맨드의 파서를 쉽게 생성할 수 있으며, 자동으로 사용자 도움말과 사용법 메시지를 생성합니다.
argparse 모듈을 사용하기 위해서는 먼저 ArgumentParser 객체를 생성해야 합니다. 그 다음, 이 객체에 프로그램이 받아들일 명령줄 인자에 대한 정보를 추가합니다. 마지막으로, parse_args() 메소드를 사용하여 명령줄 인자를 파싱합니다.
import argparse
# 파서 생성
parser = argparse.ArgumentParser(description='Example Argparse Program')
# 인자 추가
parser.add_argument('--foo', help='foo help')
parser.add_argument('bar', nargs='+', help='bar help')
# 인자 파싱
args: argparse.Namespace = parser.parse_args()
# 사용 예
print(args.foo)
print(args.bar)
add_argument()add_argument() 메소드는 프로그램이 받을 수 있는 인자를 파서에 추가합니다. 이 메소드는 여러 옵션을 제공하여 인자의 동작을 세밀하게 설정할 수 있습니다.
name or flags: 인자의 이름이나 옵션 문자열의 리스트 (예: foo 또는 --foo, -f)action: 인자가 발견될 때 수행할 동작nargs: 받아들일 명령줄 인자의 수const: action이 'store_const'이나 'append_const'로 설정될 때 사용할 상수 값default: 인자가 제공되지 않을 때 사용할 기본값type: 인자가 변환될 데이터 타입choices: 인자로 허용될 값의 컨테이너required: 명령줄 옵션 인자가 필수인지 여부 (기본값은 False)help: 인자에 대한 도움말 메시지metavar: 사용법 메시지에서 사용될 인자의 이름dest: 파싱된 인자가 저장될 속성의 이름action)action 옵션은 파서가 인자를 어떻게 처리할지 결정합니다. 몇 가지 일반적인 action 값에는 다음이 포함됩니다:
'store': 인자의 값을 저장 (기본 동작)'store_true' / 'store_false': 인자가 지정되면 True/False를 저장'append': 인자가 여러 번 지정되면 값의 리스트를 저장'count': 인자가 나타난 횟수를 저장import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
args: argparse.Namespace = parser.parse_args()
print(args.accumulate(args.integers))
이 예제에서 --sum 옵션은 사용자가 합계를 계산하고자 할 때 사용됩니다. 그렇지 않으면 기본적으로 최댓값을 찾습니다. integers 인자는 하나 이상의 정수를 받
아들이며, accumulate 함수는 이 정수들에 적용됩니다.
argparse 모듈은 명령줄 인터페이스를 제공하는 Python 프로그램을 작성할 때 매우 유용하며, 복잡한 인자 처리 요구 사항도 쉽게 관리할 수 있게 해줍니다.
args: argparse.Namespace = parser.parse_args()argparse.Namespace는 사용자가 프로그램을 실행할 때 커맨드 라인에 입력한 옵션들을 저장하는 '가방'argparse.Namespace를 이해하기 위한 비유고등학생에게 이해를 돕기 위해, 게임을 예로 들어 보겠습니다. 여러분이 컴퓨터 게임을 시작할 때, 게임의 난이도, 캐릭터 이름, 사용할 무기 등을 설정할 수 있다고 상상해 봅시다. 이 정보들을 게임이 시작하기 전에 입력하면, 게임은 여러분이 입력한 설정대로 진행됩니다.
이제, argparse.Namespace는 마치 여러분이 게임을 시작하기 전에 선택한 설정들(난이도, 캐릭터 이름, 사용할 무기 등)을 저장하는 가상의 '가방'과 같습니다. 프로그램이 실행될 때, 커맨드 라인을 통해 입력된 각종 설정들이 이 '가방' 안에 넣어져 프로그램 내에서 사용될 수 있게 됩니다.
parse_args와 parse_known_args 함수: 파이썬 스크립트에 전달된 커맨드 라인 인자를 파싱하는 데 사용parse_args와 parse_known_args의 주된 차이는 오류 처리와 인자의 유연성에 있음parse_args는 엄격하게 인자를 처리하며, 모든 인자가 정의에 맞아야 함parse_known_args는 정의된 인자들만 처리하고, 나머지는 후속 처리를 위해 반환parse_argsargs: None이거나 문자열의 리스트. None으로, 이 경우 sys.argv에서 인자들을 자동으로 가져옴namespace: argparse.Namespace 객체.Namespace 객체를 생성argparse.NamespaceNamespace 객체를 반환parse_args는 모든 인자가 명시된 파서에 의해 정의된 규칙을 따라야 한다고 가정parse_known_argsargs: None이거나 문자열의 리스트. parse_args와 마찬가지로, 기본값은 None이며, 이 경우 sys.argv에서 인자들을 가져옴namespace: argparse.Namespace 객체. Namespace 객체를 생성argparse.Namespace, 리스트)Namespace 객체parse_known_args는 정의된 인자들을 파싱하고, 나머지 알려지지 않은 인자들은 무시하거나 별도로 처리하기 위한 경우에 유용