鉴于我有这样的代码:
columns = ['col1', 'col2', 'col3', 'col4']
@click.option('--columns', is_flag=False,
default=columns, show_default=True, metavar='<columns>', type=click.Choice(columns),
help='Sets target columns', multiple=True)
然后我可以像这样打电话给我的应用程序:
./myapp --columns=col1
但是,如何使用逗号分隔的多个项目,如下所示:
./myapp --columns=col1,col3
我的目标是从生成的columns
数组['col1', 'col3']
中检索传递的值。
我不想多次传递该选项。
答案 0 :(得分:4)
multiple
中的click.option
关键字是您可以多次传递相同的选项,例如--columns=col1 --columns=col2
。相反,您可以接受列的字符串,然后自己提取并验证列:
cols = ['col1', 'col2', 'col3', 'col4']
@click.option('--columns', is_flag=False, default=','.join(cols), show_default=True,
metavar='<columns>', type=click.STRING, help='Sets target columns')
@click.command()
def main(columns):
# split columns by ',' and remove whitespace
columns = [c.strip() for c in columns.split(',')]
# validate passed columns
for c in columns:
if c not in cols:
raise click.BadOptionUsage("%s is not an available column." % c)
print(columns)