是否有等同于
argparse
的
nargs='*'
Click?中可选参数的功能?
我正在编写一个命令行脚本,其中一个选项需要能够接受无限数量的参数,例如:
foo --users alice bob charlie --bar baz
所以
users
可能是
['alice', 'bob', 'charlie']
和
bar
可能是
'baz'
.
在里面
argparse
,我可以指定多个可选参数,通过设置
nargs=“*”
.
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--users', nargs='*')
>>> parser.add_argument('--bar')
>>> parser.parse_args('--users alice bob charlie --bar baz'.split())
Namespace(bar='baz', users=['alice', 'bob', 'charlie'])
我知道单击允许您指定参数
accept unlimited inputs
按设置
nargs=-1
,但当我尝试设置可选参数
nargs
到-1,我得到:
TypeError:选项不能有nargs<0
是否有办法使Click accept为选项指定数量的参数?
更新:
我需要能够在接受无限参数的选项之后指定选项。
更新:
@斯蒂芬·劳赫的回答回答了这个问题。然而,我不建议使用我在这里要求的方法。我的功能请求是
intentionally not implemented in Click
,因为它可能导致意外行为。
Click's recommended approach is to use
multiple=True
:
@click.option('-u', '--user', 'users', multiple=True)
在命令行中,它将如下所示:
foo -u alice -u bob -u charlie --bar baz