parser.add_argument('filename') # 위치 인자
parser.add_argument('-c', '--count') # 옵션 인자
add_argument
인자 추가nargs
:?
: 1개 인자만 사용. 없을 경우 default 사용. 옵션 사용은 하지만 인자가 없을 경우 const 사용*
: 모든 명령행 인자를 list 로 받기+
: *
과 유사하게 list로 받지만, 최소 1개 인자 필수>>parser = argparse.ArgumentParser()
>>parser.add_argument('--foo', nargs='?', const='c', default='d')
# 옵션 + 인자
>>parser.parse_args(['--foo', 'YY'])
Namespace(foo='YY')
# 옵션은 있지만 인자가 없어 const 사용
>>parser.parse_args(['XX', '--foo'])
Namespace(foo='c')
# 옵션 없을 시 default
>>parser.parse_args([])
Namespace(foo='d')
help
: 인자에 대한 help message
required
: 필수 여부 True/False
dest
:
--
를 제거하여 지정choice
: 지정된 집합 안에서 선택. 범위를 벗어나면 에러 발생
# list 를 통해 집합 지정
>>parser = argparse.ArgumentParser(prog='game.py')
>>parser.add_argument('move', choices=['rock', 'paper', 'scissors'])
>>parser.parse_args(['rock'])
Namespace(move='rock')
# 지정되지 않은 인자이므로 에러
>>parser.parse_args(['fire'])
usage: game.py [-h] {rock,paper,scissors}
game.py: error: argument move: invalid choice: 'fire' (choose from 'rock',
'paper', 'scissors')
# range 로 숫자 범위 지정
>>parser = argparse.ArgumentParser(prog='doors.py')
>>parser.add_argument('door', type=int, choices=range(1, 4))
>>print(parser.parse_args(['3']))
Namespace(door=3)
# 범위를 벗어나 에러
>>parser.parse_args(['4'])
usage: doors.py [-h] {1,2,3}
doors.py: error: argument door: invalid choice: 4 (choose from 1, 2, 3)
int
, float
등 타입 지정. 사용자 함수도 가능bool
은 권장하지 않음. 빈 문자열인지 여부로 지정되므로 바람직하지 않음import argparse
import pathlib
parser = argparse.ArgumentParser()
parser.add_argument('count', type=int)
parser.add_argument('distance', type=float)
parser.add_argument('street', type=ascii)
parser.add_argument('code_point', type=ord)
parser.add_argument('source_file', type=open)
parser.add_argument('dest_file', type=argparse.FileType('w', encoding='utf8'))
parser.add_argument('datapath', type=pathlib.Path)
ex)
parser.add_argument('--file', '-f', nargs='?', help='target file name', dest='file_name')
parser.add_argument('--date', '-d', nargs='?', help='yyyyMMdd', default=datetime.now().strftime("%Y%m%d"), dest='date')
# type=int 로 숫자로 받기,
parser.add_argument('--number', '-n', nargs='?', type=int, help='something number', default=1, dest='number')
# 인자에 대한 help message 출력
parser.print_help()
개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.