将零或可变数量的值传递给Click.Option

时间:2019-05-29 21:03:19

标签: python command-line-interface python-click

假设我们具有以下功能, 具有可选参数exclude,这是预期的 成为字符串列表:

@group.command()
@click.option(???)
def load(exclude = None):
    # ...

我希望用户能够像这样执行脚本:

python script.py load --exclude one two three

python script.py load --exclude something

在这种情况下,我希望exclude['one', 'two', 'three']['something']。 但是我希望--exclude中的值的数量是可变的,包括0。用户应该能够执行

python script.py load

在这种情况下,exclude应该为None(或[],没关系)。

如何使用点击操作?

到目前为止,我唯一可行的选择是强制用户使用

python script.py load --exclude "one two three"

然后调用exclude.split(),但是更清洁的方法会更好。

1 个答案:

答案 0 :(得分:0)

似乎没有按您想要的方式受到支持,方法是单击:

根据文档Multi Value Options,必须具有nargs中指定的选项数量,因此nargs=2需要2个值。

此外,multiple options不会否定多次传递该选项的需要。

您最可能的解决方案是传递字符串和拆分,尽管我没有对Click进行过深入的研究,所以有人可能会有更好的解决方案。