在 Argparse 中使用多个相同的参数

Posted

技术标签:

【中文标题】在 Argparse 中使用多个相同的参数【英文标题】:Using Multiple Identical Arguments with Argparse 【发布时间】:2022-01-07 09:36:01 【问题描述】:

我正在使用 argparse 库 (https://docs.python.org/3/library/argparse.html) 来解析 Python3 脚本的参数。我希望能够多次指定一个特定的参数。例如:

$ myscript -i host1 -i host2

使用 parser.add_argument('-i', nargs='*') 允许使用 -i 的多个参数。例如:

$ myscript -i host1 host2

但是,我希望 -i 出现多次。这可能吗?现在,第二次使用该参数会覆盖第一次(在我最初的示例中,只会传递“host2”)

【问题讨论】:

就在昨天***.com/questions/70165231/… 【参考方案1】:

从文档来看,如果你使用action="append",它似乎可以做你想做的事。

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='append')
>>> parser.parse_args('--foo 1 --foo 2'.split())
Namespace(foo=['1', '2'])

【讨论】:

是的!我忽略了“动作”关键字参数。所以我的解决方案是parser.add_argument('-i', action='append')。谢谢!

以上是关于在 Argparse 中使用多个相同的参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 optparse 或 argparse 处理使用相同选项的多个参数

Python Argparse 多次使用相同的参数

ArgParse 模块想要在单个命令中使用两个参数

如何使用 2 个位置参数在 argparse 上打印帮助界面?

如果只给出一个参数,则不同的 argparse 规则

如何在 argparse 中嵌套自定义参数解析器实例