2014-08-18 6 views
2

그래서 각 선택 항목에 대해 지정된 선택적 매개 변수를 사용하여 임의의 선택 목록 (줄거리)을 취할 수있는 파서를 만들려고합니다. 그리고 형태의 단지 사용하여 여러 인수의 서브 subparsers의 아이디어를 삼습니다 :Python Argparse는 nargs => 1로 덧붙입니다.

--plot foo --xlim 0 10 --ylim -5 5 --plot bar --xlim -5 5 --ylim 0 10 --clim 1e24 1e27 

하지만 nargs 작업 할 _가 조치 = 2 얻이 수없는 것 :

>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> parser.add_argument('--foo', action='append', nargs=2, type=int) 
_AppendAction(option_strings=['--foo'], dest='foo', nargs=2, const=None, default=None, type=<type 'int'>, choices=None, help=None, metavar=None) 
>>> parser.parse_args("--foo 1 2 --foo 3 4") 
usage: [-h] [--foo FOO FOO] 
: error: unrecognized arguments: - - f o o 1 2 - - f o o 3 4 

을 목록 목록이나 튜플 목록을 얻길 바랬습니다. argparse가 원하는 동작을 지원하지 않습니까? 아니면 구현시 문제가 있습니까?

당신은 아닌 문자열 문자열 목록을 통과해야
+0

당신이 parse_args'이 [예에서]라고하는 방법'통지를하지 않았다 (https://docs.python.org/dev /library/argparse.html#option-value-syntax)? 그들은 항상'parse_args ('- foo 1 2'.split())'를 사용합니다. 문자열을 문자열 목록으로 바꾸는 마지막'.split()'에 주목하십시오. – Bakuriu

답변

4

:

>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> parser.add_argument('--foo', action='append', nargs=2, type=int) 
_AppendAction(option_strings=['--foo'], dest='foo', nargs=2, const=None, default=None, type=<type 'int'>, choices=None, help=None, metavar=None) 
>>> parser.parse_args(["--foo", "1", "2", "--foo", "3", "4"]) # <---- 
Namespace(foo=[[1, 2], [3, 4]]) 
관련 문제