Python에서 스크립트를 작성할 때 사용자가 명령줄에서 인자를 입력할 수 있도록 하는 기능은 매우 유용합니다. 이때 사용하는 표준 모듈이 바로 argparse이며, 그 핵심 클래스가 ArgumentParser입니다. 이 글에서는 ArgumentParser의 내용을 정리하였습니다.
ArgumentParser란 무엇인가요?
ArgumentParser는 Python 내장 모듈인 argparse의 핵심 클래스입니다. 이 클래스는 명령행에서 입력된 인자(arguments)를 해석(parse)하고, 프로그램에서 이를 쉽게 사용할 수 있게 도와줍니다. 즉, 사용자가 명령줄에서 어떤 값을 입력하면 이를 자동으로 분석해서 변수처럼 사용할 수 있도록 해주는 도구입니다.
예를 들어 다음과 같이 실행하는 스크립트를 만들 수 있습니다.
$ python hello.py --name Alice --age 30
이때 --name과 --age는 옵션 인자이며, ArgumentParser를 통해 name="Alice", age=30으로 파싱할 수 있습니다.
ArgumentParser 기본 사용법
ArgumentParser를 사용하는 기본적인 방법은 다음과 같습니다:
import argparse
parser = argparse.ArgumentParser(description="간단한 인자 처리 예제")
parser.add_argument('--name', type=str, required=True, help='이름을 입력하세요')
parser.add_argument('--age', type=int, help='나이를 입력하세요')
args = parser.parse_args()
print(f"안녕하세요, {args.name}님!")
if args.age:
print(f"당신의 나이는 {args.age}살입니다.")
이 코드를 hello.py로 저장하고 아래처럼 실행하면:
$ python hello.py --name Alice --age 30
출력 결과는 다음과 같습니다:
안녕하세요, Alice님!
당신의 나이는 30살입니다.
인자 종류별 설명
ArgumentParser에서는 크게 두 가지 인자 유형을 처리할 수 있습니다.
1. 위치 인자 (Positional Argument)
사용자가 순서대로 입력해야 하는 인자입니다. 예:
parser.add_argument('filename', type=str, help='파일 이름')
실행:
$ python script.py myfile.txt
2. 옵션 인자 (Optional Argument)
--옵션이름 형태로 입력하며 순서에 상관없고 기본값을 지정할 수도 있습니다.
parser.add_argument('--verbose', action='store_true', help='자세한 출력을 활성화합니다')
실행:
$ python script.py --verbose
이때 args.verbose는 True가 됩니다.
자주 사용하는 옵션들
add_argument() 함수에서 자주 사용하는 인자들은 다음과 같습니다.
- type: 입력값의 자료형 지정 (예: int, str)
- default: 입력하지 않았을 때 사용할 기본값
- required: 옵션 인자를 필수로 지정
- help: --help 출력 시 표시될 설명
- choices: 허용되는 값 목록 지정
- action: 특별 동작 지정 (예: store_true(값이 입력되면 true))
예시:
parser.add_argument('--level', choices=['low', 'medium', 'high'], help='레벨을 선택하세요')
예시: 파일 처리 도구
import argparse
parser = argparse.ArgumentParser(description='파일 처리 도구')
parser.add_argument('input_file', type=str, help='입력 파일 경로')
parser.add_argument('--lines', type=int, default=10, help='출력할 줄 수 (기본값: 10줄)')
parser.add_argument('--reverse', action='store_true', help='출력을 역순으로 표시')
args = parser.parse_args()
with open(args.input_file, 'r') as f:
lines = f.readlines()
if args.reverse:
lines = lines[::-1]
for line in lines[:args.lines]:
print(line.strip())
이 스크립트를 아래와 같이 실행하면:
$ python file_reader.py sample.txt --lines 5 --reverse
sample.txt에서 마지막 5줄을 역순으로 출력합니다.
감사합니다.
'프로그래밍 > Python' 카테고리의 다른 글
| Python expand() 및 repeat() (16) | 2025.07.12 |
|---|---|
| Python squeeze 및 unsqueeze 함수 - view와의 차이 (4) | 2025.07.12 |
| Python reshape 함수 - view, flatten과의 차이 (20) | 2025.07.11 |
| Python pip란? pip 사용법 (12) | 2025.07.04 |
| Python venv로 가상 환경 관리하는 방법 (2) | 2025.07.03 |