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

Using Multiple Identical Arguments with Argparse

我正在使用 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' 会被传递)

根据文档,如果您使用 action="append",它似乎可以满足您的要求。

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