我正在用 Python 编写脚本,并使用 argparse 来解析我的参数。该脚本应该比较可用对齐器池中的两个不同“对齐器”,并且每个对齐器都有一些配置选项。
我希望能够用类似的东西调用我的脚本:
./script.py --aligner aligner1 --param 12 --aligner aligner2 --param 30 --other_param 28
我想摆脱这种结构,其中第一个 --param 选项“属于”第一个 --aligner 选项,第二个 --param 和 --other_param 选项“属于”第二个--aligner 选项。
argparse 是否能够进行这种结构化的选项解析?
如果是这样,最好的方法是什么?如果没有,我应该看看另一个图书馆吗?
我可以使用更好的 UI 设计来代替这个吗?
请您参考如下方法:
总的来说,我认为你想要的是不可能的,因为你不能将可选参数值关联在一起。也就是说,我看不到如何将 --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
然后,您将每个对齐器的附加参数拆分为一个列表,按'=' 拆分,然后创建一个dict。可能会使用一组默认参数进行更新。
