728x90
argparse
- argparse 모듈은 명령행 옵션, 인자와 부속 명령을 위한 파서 모듈이다.
- 사용자 친화적인 명령행 인터페이스를 쉽게 작성하도록 한다.
- 도움말과 사용법 메시지를 출력해주며, 사용자가 잘못된 인자를 주면 에러를 발생시킨다.
예제
간단하게 활용 방안에 대한 예제입니다.
import pickle
import argparse
parser = argparse.ArgumentParser(description='New OR Continue')
parser.add_argument('-n', '--new', dest='new', default=False, help='new run')
parser.add_argument('-c', '--continue', dest='continue', default=True, help='continue run')
args = parser.parse_args()
print(args)
# print(args.__dict__['new'], type(args.__dict__['new']))
# print(args.__dict__['continue'], type(args.__dict__['continue']))
data = None
if args.__dict__['new']:
print('new run')
data = [i for i in range(100)]
elif args.__dict__['continue']:
print('continue run')
with open('data.pkl', 'rb') as f:
data = pickle.load(f)
print(data)
접근은 add_argument 함수의 dest 값으로 하시면 되겠습니다.
parser.add_argument('-n', '--new', dest='new', default=False, help='new run')
...
print(args.__dict__['new'], type(args.__dict__['new']))
도움말 보기
python ex.py -h
usage: ex.py [-h] [-n NEW] [-c CONTINUE]
New OR Continue
optional arguments:
-h, --help show this help message and exit
-n NEW, --new NEW new run
-c CONTINUE, --continue CONTINUE
continue run
인자를 생략하여 실행 결과입니다.
continue 인자의 default 값은 True 입니다.
python ex.py
Namespace(continue=True, new=False)
continue run
[1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49]
-n 옵션을 주어서 실행했습니다.
근데 많이 어색합니다.
python ex.py -n True
Namespace(continue=True, new='True')
new run
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
인자 뒤에 값을 필요로 하지 않은 경우도 있습니다.
다음과 같은 형태로 사용하고 싶은데 argparse 에 의해 오류가 발생합니다.
python ex.py -n
usage: ex.py [-h] [-n NEW] [-c CONTINUE]
ex.py: error: argument -n/--new: expected one argument
두 번째 예제 코드입니다.
import pickle
import argparse
parser = argparse.ArgumentParser(description='New OR Continue')
parser.add_argument('-n', '--new', dest='new', action='store_true', help='new run')
# parser.add_argument('-n', '--new', dest='new', action='count', default=0, help='new run')
args = parser.parse_args()
data = None
if args.__dict__['new']:
print('new run')
data = [i for i in range(100)]
else:
print('continue run')
with open('data.pkl', 'rb') as f:
data = pickle.load(f)
print(data)
add_argument 함수의 action 인자에 count 혹은 store_true 를 사용하면 됩니다.
count 는 해당 인자가 몇 번 나왔는지 카운트하는 기능을 합니다. (여기서는 한 번이면 되겠죠)
store_true 는 해당 옵션이 명령줄에 제공되는 경우 파서의 딕셔너리에 True 를 저장합니다.
parser.add_argument('-n', '--new', dest='new', action='store_true', help='new run')
parser.add_argument('-n', '--new', dest='new', action='count', default=0, help='new run')
python ex2.py
continue run
[1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49]
python ex2.py -n
new run
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
'Language > Python' 카테고리의 다른 글
파이썬 엘라스틱서치(Elasticsearch) 연동 -2 : CRUD (0) | 2020.08.11 |
---|---|
파이썬 엘라스틱서치(Elasticsearch) 연동 -1 : 원격 설정 (0) | 2020.08.11 |
파이썬 추상 클래스(abc) 사용하기 (0) | 2020.08.10 |
파이썬 Tesseract 사용하기 -2 : 패키지 설치 / 예제 (0) | 2020.08.06 |
파이썬 Tesseract 사용하기 -1 : 설치 (0) | 2020.08.06 |