使用Python argparse选项的选项?

时间:2013-07-08 23:09:54

标签: python command-line structure argparse

我正在用Python编写脚本,并使用argparse来解析我的参数。该脚本应该从可用的对齐器池中比较两个不同的“对齐器”,每个对齐器都有一些配置选项。

我希望能够用以下内容调用我的脚本:

./script.py --aligner aligner1 --param 12 --aligner aligner2 --param 30 --other_param 28

我想摆脱这种结构,其中第一个--param选项“属于”第一个--aligner选项,第二个--param和--other_param选项“属于”第二个--aligner选项。

argparse是否能够进行这种结构化选项解析?

如果是这样,最好的方法是什么?如果没有,我应该看看另一个图书馆吗?

是否有一个非常好的用户界面设计,我可以使用而不是这个?

1 个答案:

答案 0 :(得分:1)

一般来说,我认为您想要的是不可能的,因为您无法将可选参数值关联在一起。也就是说,我无法看到如何将--param 12--aligner aligner1相关联。

然而

您可以按如下方式使用argparse

p = argparse.ArgumentParser ()
p.add_argument ("--aligner", action="append", nargs="+")

这将创建多个对齐器参数,每个参数需要至少一个参数(对齐器名称)。然后,您可以使用其他编码方案(可以在解析器的帮助文本中进行记录),该方案对每个对齐器的参数进行编码。例如,您可以使用以下命令调用脚本:

./script.py --aligner aligner1 param=12 --aligner aligner2 param=30 other_param=28

然后,您将每个对齐器的其他参数拆分为list,按'='拆分,然后创建dict。使用默认参数集进行潜在更新。