python - 如何将多个参数列表传递给@click.option

标签 python command-line parameters python-click

我想通过命令行使用这种参数调用 python 脚本(列表可以是任何大小,例如 3):

python test.py --option1 ["o11", "o12", "o13"] --option2 ["o21", "o22", "o23"]

使用点击。从文档中,没有任何地方说明我们可以使用列表作为 @click.option 的参数。

当我尝试这样做时:

#!/usr/bin/env python
import click

@click.command(context_settings=dict(help_option_names=['-h', '--help']))
@click.option('--option', default=[])
def do_stuff(option):

    return

# do stuff
if __name__ == '__main__':
    do_stuff()

在我的 test.py 中,通过从命令行调用它:

python test.py --option ["some option", "some option 2"]

我得到一个错误:

Error: Got unexpected extra argument (some option 2])

我不能真正使用可变参数,因为每个命令只允许 1 个可变参数(http://click.pocoo.org/5/arguments/#variadic-arguments)

因此,如果有人能指出正确的方向(最好使用点击),我将不胜感激。

最佳答案

如果您不坚持传递看起来像列表的东西,而只是想传递多个可变参数,您可以使用 multiple 选项。

来自click documentation

@click.command()
@click.option('--message', '-m', multiple=True)
def commit(message):
    click.echo('\n'.join(message))
$ commit -m foo -m bar
foo
bar

关于python - 如何将多个参数列表传递给@click.option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631914/

相关文章:

python - 如何从嵌套列表中仅获取前 5 名和后 5 名列表?

c# - 如何将字符串参数传递给 t4 模板

vb.net - 插入事务和参数?

ios - 从命令行运行 Apple Instruments 会抛出 : The simulated application quit

c - 对二维数组函数参数使用限制关键字的语法是什么?

python - Django:按不同列的最新过滤

python - 在球壳内生成积分点

python - 无法按分类列过滤 pandas 数据框

visual-studio - 随处使用 Visual Studio 命令提示工具

bash - 杀死文件夹中的所有pid文件