python script를 실행할때, 인자 값을 전달하여 함께 실행하고 싶을 때 "argparse" 모듈을 사용한다.
기본적으로 아래와 같은 format을 가진다.
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
해당 test.py를 그냥 실행시켜 보면 아무것도 화면에 표시되지 않는다.
이제 아래와 같이 옵션?을 주고 실행해보도록 하자.
위 실행 결과를 통해 아래와 같은 사항을 알 수 있다.
이제 아래 script를 수행해 보도록 하자.
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("parameter")
args = parser.parse_args()
print(args.parameter)
우선 옵션(인자) 없이 실행해보도록 하자.
error가 발생하였으며, "parameter" arguments가 요구된다는 메세지가 출력되었다.
이제 옵션(인자) "hello" 를 추가하여 실행해보자
인자로 넘긴 hello 라는 단어가 출력된 것을 알 수 있다.
참고로 별다른 옵션을 주지 않으면, argparse 는 전달되는 인자 모두 string으로 인식한다.
이번 예제에서는 하기 2 문장이 추가되었다.
...
parser.add_argument("parameter")
args = parser.parse_args()
...
print(args.parameter)
옵션으로 입력된 값은 parameter 라는 변수에 저장이 된다. 또한 parser.parse_args()를 통해 return된 args 변수를 통해
parameter 변수에 접근하여 사용( cf. printf )할 수 있다
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("parameter", help="you should enter some value." )
args = parser.parse_args()
print(args.parameter)
add_argument()의 2번째 인자인 "help"는 script 실행 시 --help 옵션과 함께 실행하면, 아래와 같이 간단한 guide를 출력해 줄 수 있다.
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
이제 하나하나 살펴보도록 하자.
add_argument() 메서드는 -f 나 --foo 와 같은 선택 인자가 필요한지, 파일 이름의 리스트와 같은 위치 인자가 필요한지 알아야 합니다.
parse_args()가 호출되면, 선택 인자는 - 접두사로 식별되고, 그 밖의 인자는 위치 인자로 간주합니다:
parser.add_argument('-f', '--foo')
parser.add_argument('bar')
store : 인자 값을 저장합니다. default option
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
args = parser.parse_args('--foo 1'.split())
print(args)
store_const : const에 저장되어있는 42를 foo에 저장한다.
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_const', const=42)
args = parser.parse_args(['--foo'])
print(args)
store_true & store_false : 각 변수에 true와 false를 저장한다.
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_false')
parser.add_argument('--baz', action='store_false')
args = parser.parse_args('--foo --baz --bar'.split())
print(args)
append : 리스트 형식으로 해당 변수에 저장
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='append')
args = parser.parse_args('--foo 1 --foo 2'.split())
print(args)
append_const : 리스트 형태로 저장한다. ( dest 옵션은 아래에 설명할 예정 )
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--str', dest='types', action='append_const', const=str)
parser.add_argument('--int', dest='types', action='append_const', const=int)
args = parser.parse_args('--str --int'.split())
print(args)
count : 키워드 인자가 등장한 횟수를 출력한다.
help : help message를 출력하고 종료한다.
version : add_argument() 호출에서 version= 키워드 인자를 기대하고, 호출되면 버전 정보를 출력하고 종료한다.
# test.py
import argparse
parser = argparse.ArgumentParser(prog='PROGRAM')
parser.add_argument('--version', action='version', version='%(prog)s 2.0')
args = parser.parse_args(['--version'])
print(args)
ArgumentParser 객체는 일반적으로 하나의 명령행 인자를 하나의 액션과 결합한다. nargs 키워드 인자는 다른 수의 명령행 인자를 하나의 액션으로 연결한다.
N
?
*+
ArgumentParser action에 필요한 상수가 정의된다.
명령행 인자가 없을 경우, default 값을 설정합니다.
# test.py
parser = argparse.ArgumentParser()
parser.add_argument('--foo', default=12)
args = parser.parse_args(['--foo', '6'])
print(args)
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', default=12)
#args = parser.parse_args(['--foo', '6'])
args = parser.parse_args()
print(args)
명령행 인자는 일반적으로 string으로 인식합니다. type 키워드는 형변환에 사용됩니다.
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='latin-1'))
인자 값을 제한하기 위해서는 해당 keyword를 사용하면 된다. 미리 정의된 인자이외의 값이 선택되면 error를 출력한다.
# test.py
import argparse
parser = argparse.ArgumentParser(prog='game.py')
parser.add_argument('move', choices=['rock', 'paper', 'scissors'])
args = parser.parse_args(['water'])
print(args)
옵션을 필수로 만들기 위해서는 required= 를 사용해야한다.
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', required=True)
args = parser.parse_args(['--foo', 'BAR'])
print(args)
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', required=True)
args = parser.parse_args()
print(args)
사용자 정의 이름을 정의한다.
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest='bar')
args = parser.parse_args('--foo XXX'.split())
print(args)
아래와 동일한 의미를 갖는다.
# test.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("bar")
args = parser.parse_args('XXX'.split())
print(args)
[파이썬(Python)] #7. string (0) | 2021.08.17 |
---|---|
[파이썬(Python)] #5. 파일 입/출력 (0) | 2021.08.17 |
[파이썬(Python)] #4. 함수 (0) | 2021.08.14 |
[파이썬(Python)] #3. os 모듈 (0) | 2021.08.13 |
[파이썬(Python)] #1. python3 설치 (0) | 2021.08.11 |