argparse_practice.py
import argparse
# 시작
parser = argparse.ArgumentParser()
# 1. Postion Type
# ex) main.py 'Steve Jobs' 27 68.2
# 위치만 지정, 키워드는 주지 않음
# 추가하는 순서가 위치가 됨
parser.add_argument('name') # 1번째 위치
# 참고: default type: sting -> 그 외에는 타입 지정 필요
parser.add_argument('age', type=int) # 2번째 위치
parser.add_argument('weight', type=float) # 3번째 위치
# 2. Keyword type
# ex) main.py --bonus 1200
# 옵션이기 때문에 필수적이지 않음
# --(dash)를 주면 Keyword type으로 인식
# --bonus 대신 -b 사용 가능 (alias 느낌) (실제로 사용되는 변수는 --변수명) -> print(b)하면 안 된다는 것
parser.add_argument('-b', '--bonus', type=int)
# 3. Choice type
# ex) main.py --color [red|green|blue]
# choices에 있는 것들 중에서만 받고 싶을 때 Choice type을 사용함
parser.add_argument('-c', '--color', choices=['red', 'green', 'blue'])
# 4. Indicator type
# 값은 필요 없고 상태만 알려주고 싶을 때 사용
# parser.add_argument('-m', '--male', action='store_true') # 남자면 True 저장 ('store_true'를 써야 작동하는 거임)
# parser.add_argument('-f', '--female', action='store_true') # 남자면 True 저장 ('store_true'를 써야 작동하는 거임)
# 5. Mutually exclusive type
# Indicator type이 하나만 입력 되도록 하기 (상호배타적으로)
group = parser.add_mutually_exclusive_group()
group.add_argument('-m', '--male', action='store_true')
group.add_argument('-f', '--female', action='store_true')
# 끝
args = parser.parse_args()
print(f'name={args.name}')
print(f'age={args.age}')
print(f'weight={args.weight}')
if args.bonus:
print(f'bonus={args.bonus}')
else:
print('There is no bonus.')
print(f'color = {args.color}')
if args.male:
print(f'Hi, Mr. {args.name}')
if args.female:
print(f'Hi, Ms. {args.name}')
Bash
python argparse_practice.py 'Steve Jobs' 27 68.5 -b 20000 -c 'red' -m
name=Steve Jobs
age=27
weight=68.5
bonus=20000
color = red
Hi, Mr. Steve Jobs
python argparse_practice.py 'Steve Jobs' 27 68.5 -b 20000 -c 'red' -f
name=Steve Jobs
age=27
weight=68.5
bonus=20000
color = red
Hi, Ms. Steve Jobs
python argparse_practice.py 'Steve Jobs' 27 68.5 -b 20000 -c 'red' -m -f
usage: argparse_practice.py [-h] [-b BONUS] [-c {red,green,blue}] [-m | -f] name age weight
argparse_practice.py: error: argument -f/--female: not allowed with argument -m/--male
python argparse_practice.py -h
usage: argparse_practice.py [-h] [-b BONUS] [-c {red,green,blue}] [-m | -f] name age weight
positional arguments:
name
age
weight
options:
-h, --help show this help message and exit
-b BONUS, --bonus BONUS
-c {red,green,blue}, --color {red,green,blue}
-m, --male
-f, --female
Reference
'오답노트' 카테고리의 다른 글
Notebook 환경에서 Weights & Biases 로그인하기 (0) | 2023.06.06 |
---|---|
Linux 터미널 명령어 동시 실행 (0) | 2023.05.11 |
sklearn.impute.SimpleImputer - 범주형 피처 최빈값 대체할 때 써보기 (0) | 2023.05.03 |
pip 패키지 매니저 (0) | 2023.04.24 |
Windows에서 venv 가상환경 생성, 활성화, 비활성화, 제거 (0) | 2023.04.24 |