【发布时间】:2017-02-23 16:13:52
【问题描述】:
我有一个argparser,有两个参数子集,输入和参数。我的命令看起来像
program -input1 <input1> -input2 <input2> -p1 <param1> -p2 <param2>
我愿意
args = parser.parse_args()
params = vars(args.params)
而不是
params = {"p1": args.p1, "p2": args.p2, etc...}
有没有一种优雅的方式来做类似的事情:
parser.add_argument("-p1", dest='p1', part_of=params)
Subparsers 似乎不是为此而生的。还是他们?
Argparse 有argument groups,但它们似乎只是用于帮助文本。
谢谢!
【问题讨论】:
-
我不清楚您要做什么。你的意思是
-p1和-p2只能与-input2的/作为子结构/“子选项”一起出现? -
参数组主要用于互斥选项。你们团体的性质是什么?例如。你能在
dest前面加上前缀来帮助分组参数吗? -
你如何为dest添加前缀? @9000
-
@jwodder,不,所有参数都是独立的,可以任意组合指定。但由于某些参数是“参数”,我希望能够通过调用
params = vars(args.params)将它们作为一个组 -
@AlexLenail:我的想法是
parser.add_argument('-p1', ... dest='output_p1')等。然后你可以自己通过.strartswith('output_')对解析结果进行分组,如果你愿意,可以去掉前缀。