💡 도움이 되셨다면 ♡와 팔로우 부탁드립니다. 미리 감사드립니다.
톺아보기는 '샅샅이 더듬어 가면서 살피다'라는 뜻의 순우리말입니다.
argparse
라이브러리 사용법argparse
란?argparse
는 Python에서 명령줄 인자를 처리하는 표준 라이브러리다. 명령줄에서 인자를 받아 프로그램의 동작을 제어할 수 있다.
import argparse
# ArgumentParser 객체 생성
parser = argparse.ArgumentParser(description="Simple Argument Parser Example")
# 명령줄 인자 추가
parser.add_argument('--name', type=str, help='Your name')
parser.add_argument('--age', type=int, help='Your age')
# 인자 파싱
args = parser.parse_args()
# 인자 값 사용
print(f"Hello {args.name}, you are {args.age} years old!")
실행 예시:
$ python script.py --name "Alex" --age 25
Hello Alex, you are 25 years old!
add_argument()
함수에서 인자의 이름만 명시하면 이를 필수 인자로 정의할 수 있다.parser.add_argument('file', type=str, help='File to process') # 필수 인자
args = parser.parse_args()
print(f"Processing file: {args.file}")
type
: 데이터 타입을 지정한다. int
, float
, str
등 인자의 데이터 유형을 지정하여 잘못된 유형의 값이 들어오면 자동으로 오류를 발생시킨다. 예를 들어, type=int
로 설정하면 인자가 정수로 입력되어야 하며, 다른 유형이 들어오면 프로그램이 실패한다.help
: 인자가 무엇을 의미하는지 설명하는 문자열로, 명령줄에서 -help
옵션을 사용할 때 출력된다.실행 예시:
$ python script.py data.txt
Processing file: data.txt
선택적 인자는 프로그램 실행 시 제공되지 않으면 기본값을 적용할 수 있다. 선택적 인자는 --
또는 -
로 시작하는 이름을 부여해서 정의할 수 있다.
parser.add_argument('--verbose', action='store_true', help='Enable verbose output') # 선택적 인자
args = parser.parse_args()
if args.verbose:
print("Verbose mode is enabled.")
action='store_true'
: 플래그(flag)처럼 작동하는 파라미터다. 인자가 명령줄에 포함되면 True
로 설정되고, 포함되지 않으면 False
가 된다. 주로 기능을 활성화하거나 비활성화할 때 사용된다.실행 예시:
$ python script.py --verbose
Verbose mode is enabled.
args
객체에 인자 추가하기parse_args()
이후 args
객체에 동적으로 새로운 인자를 추가할 수 있다. 이 방법은 파싱 이후에 변수를 처리할 때 유용하다.# 명령줄 인자 추가
parser.add_argument('--name', type=str, help='Your name')
args = parser.parse_args()
# 명령줄 인자를 받은 후 여러 동적 변수 추가
args.age = 25 # 나이를 추가
args.location = 'Seoul' # 위치 정보를 추가
args.is_student = True # 학생 여부 추가
print(f"Name: {args.name}")
print(f"Age: {args.age}")
print(f"Location: {args.location}")
print(f"Is Student: {args.is_student}")
parser.add_argument('--level', type=int, default=1, help='Set the level (default: 1)')
args = parser.parse_args()
print(f"Level set to {args.level}")
default
: 인자가 명령줄에서 제공되지 않았을 때 사용할 기본값을 지정한다. 이를 통해 사용자가 인자를 생략할 때도 프로그램이 정상적으로 작동하도록 설정할 수 있다.실행 예시:
$ python script.py
Level set to 1
$ python script.py --level 5
Level set to 5
argparse
는 머신러닝 및 딥러닝 모델에서 하이퍼파라미터를 설정할 때 매우 유용하다. 명령줄에서 학습률, 배치 크기 등의 값을 쉽게 설정할 수 있다.parser.add_argument('--learning_rate', type=float, default=0.001, help='Learning rate for training')
parser.add_argument('--batch_size', type=int, default=32, help='Batch size for training')
args = parser.parse_args()
print(f"Training with learning rate {args.learning_rate} and batch size {args.batch_size}")
type
: 인자의 데이터 타입을 정의한다. 학습률은 실수(float
), 배치 크기는 정수(int
)로 정의해야 한다. 잘못된 타입의 입력을 자동으로 걸러준다.실행 예시:
$ python train.py --learning_rate 0.01 --batch_size 64
Training with learning rate 0.01 and batch size 64
group = parser.add_argument_group('Model Parameters')
group.add_argument('--epochs', type=int, default=10, help='Number of epochs for training')
group.add_argument('--dropout', type=float, default=0.5, help='Dropout rate')
args = parser.parse_args()
print(f"Training for {args.epochs} epochs with {args.dropout} dropout")
add_argument_group()
: 인자들을 그룹화하여 프로그램의 구조를 더 명확하게 보여준다. 여러 인자가 서로 관련이 있을 때 유용하다.help 호출
$ python script.py --help
usage: script.py [-h] [--epochs EPOCHS] [--dropout DROPOUT] [--learning_rate LEARNING_RATE]
optional arguments:
-h, --help show this help message and exit
--learning_rate LEARNING_RATE
Learning rate for training
Model Parameters:
--epochs EPOCHS Number of epochs for training
--dropout DROPOUT Dropout rate for training
subparsers = parser.add_subparsers(dest='command')
# 'train' 명령 서브 파서
train_parser = subparsers.add_parser('train', help='Train the model')
train_parser.add_argument('--data', type=str, help='Training data path')
# 'evaluate' 명령 서브 파서
eval_parser = subparsers.add_parser('evaluate', help='Evaluate the model')
eval_parser.add_argument('--model', type=str, help='Model path for evaluation')
args = parser.parse_args()
if args.command == 'train':
print(f"Training with data: {args.data}")
elif args.command == 'evaluate':
print(f"Evaluating model: {args.model}")
dest
: 서브 명령의 이름을 저장할 변수의 이름이다.add_subparsers()
: 프로그램에 여러 서브 명령을 추가할 때 사용된다. 이를 통해 하나의 스크립트에서 여러 작업을 처리할 수 있다.add_parser()
: 각 서브 명령에 대한 파서를 추가한다. 각 명령은 고유의 인자를 가질 수 있다.실행 예시:
$ python script.py train --data train_data.csv
Training with data: train_data.csv
$ python script.py evaluate --model model.h5
Evaluating model: model.h5
argparse
는 Python에서 명령줄 인자를 손쉽게 처리할 수 있는 강력한 도구다. 이를 통해 프로그램을 실행할 때마다 여러 인자를 명령줄에서 받아들여, 코드의 유연성과 재사용성을 높일 수 있다. 특히 머신러닝이나 딥러닝에서 하이퍼파라미터(예: 학습률, 배치 크기, 에포크 수 등)를 설정할 때 매우 유용하다. 모델을 학습하거나 평가하는 과정에서 하이퍼파라미터를 자주 변경해야 할 때, 명령줄 인자를 통해 손쉽게 다양한 설정을 변경할 수 있어, 모델 실험의 효율성을 크게 향상시킬 수 있다.