将零个或可变数量的值传递给 Click.Option
Passing zero or variable number of values to Click.Option
假设我们有以下函数,它
有一个可选参数 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()
,但更干净一些会更好。
它似乎不受支持,以您想要的方式,通过单击:
根据文档 Multi Value Options 必须具有 nargs
中指定的选项数量,因此 nargs=2
需要 2 个值。
此外,multiple options 不会否定多次传递选项的需要。
你最可能的解决方案是传递一个字符串并拆分,虽然我没有使用过太深的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()
,但更干净一些会更好。
它似乎不受支持,以您想要的方式,通过单击:
根据文档 Multi Value Options 必须具有 nargs
中指定的选项数量,因此 nargs=2
需要 2 个值。
此外,multiple options 不会否定多次传递选项的需要。
你最可能的解决方案是传递一个字符串并拆分,虽然我没有使用过太深的Click,所以有人可能有更好的解决方案。