我正在用Python编写脚本,并使用argparse来解析我的参数。该脚本应该从可用的对齐器池中比较两个不同的“对齐器”,每个对齐器都有一些配置选项。
我希望能够用以下内容调用我的脚本:
./script.py --aligner aligner1 --param 12 --aligner aligner2 --param 30 --other_param 28
我想摆脱这种结构,其中第一个--param选项“属于”第一个--aligner选项,第二个--param和--other_param选项“属于”第二个--aligner选项。
argparse是否能够进行这种结构化选项解析?
如果是这样,最好的方法是什么?如果没有,我应该看看另一个图书馆吗?
是否有一个非常好的用户界面设计,我可以使用而不是这个?
答案 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
。使用默认参数集进行潜在更新。