Skip to main content
 首页 » 编程设计

python之带有 Python argparse 选项的选项

2025年05月04日9www_RR

我正在用 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。可能会使用一组默认参数进行更新。