반응형
여러 입력 소스를 받아들이고 각각에 대해 뭔가를하는 스크립트를 작성하려고합니다. 이 같은
./my_script.py -i input1_url input1_name input1_other_var -i input2_url input2_name input2_other_var -i input3_url input3_name
# notice inputX_other_var is optional
그러나 argparse
를 사용하여 이것을 수행하는 방법을 알 수 없습니다. 각 옵션 플래그를 한 번만 사용할 수 있도록 설정된 것 같습니다. 여러 인수를 단일 옵션 ( nargs = '*'
또는 nargs = '+'
)과 연결하는 방법을 알고 있지만 여전히 < code> -i 플래그를 여러 번 사용합니다. 이 작업을 수행하려면 어떻게해야합니까?
명확하게 말하면 마지막으로 원하는 것은 문자열 목록입니다. 그래서
[["input1_url", "input1_name", "input1_other"],
["input2_url", "input2_name", "input2_other"],
["input3_url", "input3_name"]]
해결 방법
다음은 metavar
에 정의 된 이름으로 반복되는 2 개의 인수를 선택적으로 처리하는 파서입니다.
parser=argparse.ArgumentParser()
parser.add_argument('-i','--input',action='append',nargs=2,
metavar=('url','name'),help='help:')
In [295]: parser.print_help()
usage: ipython2.7 [-h] [-i url name]
optional arguments:
-h, --help show this help message and exit
-i url name, --input url name
help:
In [296]: parser.parse_args('-i one two -i three four'.split())
Out[296]: Namespace(input=[['one', 'two'], ['three', 'four']])
이것은 2 또는 3 인수
케이스를 처리하지 않습니다 (예전에는 그러한 범위를 처리 할 Python 버그 / 문제에 대한 패치를 작성했지만).
nargs = 3
및 metavar = ( 'url', 'name', 'other')
로 별도의 인수 정의는 어떻습니까?
튜플 metavar
는 nargs = '+'
및 nargs = '*'
와 함께 사용할 수도 있습니다. 두 문자열은 [-u A [B ...]]
또는 [-u [A [B ...]]]
로 사용됩니다.
참조 페이지 https://stackoverflow.com/questions/36166225
반응형
'파이썬' 카테고리의 다른 글
파이썬 python display map with googlemaps (0) | 2020.11.08 |
---|---|
파이썬 Django-makemigrations-감지 된 변경 사항 없음 (0) | 2020.11.07 |
파이썬 ImportError : 'google'이라는 모듈이 없습니다. (0) | 2020.11.07 |
파이썬 sqlalchemy에서 테이블을 쿼리하는 방법 (0) | 2020.11.07 |
파이썬 Python 용 Spyder 편집기에서 들여 쓰기 설정 변경 (0) | 2020.11.07 |
댓글