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_args
args
: None
이거나 문자열의 리스트. None
으로, 이 경우 sys.argv
에서 인자들을 자동으로 가져옴namespace
: argparse.Namespace
객체.Namespace
객체를 생성argparse.Namespace
Namespace
객체를 반환parse_args
는 모든 인자가 명시된 파서에 의해 정의된 규칙을 따라야 한다고 가정parse_known_args
args
: None
이거나 문자열의 리스트. parse_args
와 마찬가지로, 기본값은 None
이며, 이 경우 sys.argv
에서 인자들을 가져옴namespace
: argparse.Namespace
객체. Namespace
객체를 생성argparse.Namespace
, 리스트)Namespace
객체parse_known_args
는 정의된 인자들을 파싱하고, 나머지 알려지지 않은 인자들은 무시하거나 별도로 처리하기 위한 경우에 유용