python - 使用 python-click 将未指定的选项添加到 cli 命令

标签 python python-click

我想使用 python-click 库向 cli 命令添加未指定的选项。所以我的 cli 函数可能如下所示

$ my-cmd --option1 value1 --options2 value2 --unknown_var value3

我当前的代码:

import click

@click.option('--option1')
@click.option('--option2')
@click.command(name='my-cmd')
def cli(option1, option2):
  click.echo("my test")

我希望看到如下内容:

import click

@click.option('--option1')
@click.option('--option2')
@click.command(name='my-cmd')
def cli(option1, option2, **kwargs):
  click.echo("my test")
  # Manually manage **kwargs

最佳答案

你可以通过 contextignore_unknown_optionsallow_extra_args 设置,额外的参数将收集在 context.args 列表(['--unknown_var'、'value3'、'--unknown_var2'、'value4'])。然后你可以把它转换成字典。

import click

@click.command(name='my-cmd', context_settings=dict(
    ignore_unknown_options=True,
    allow_extra_args=True,
))
@click.option('--option1')
@click.option('--option2')
@click.pass_context
def cli(ctx, option1, option2):
    click.echo({ctx.args[i][2:]: ctx.args[i+1] for i in range(0, len(ctx.args), 2)})

例子

python cli.py --option1 value1 --option2 value2 --unknown_var value3 --unknown_var2 value4
>> {'unknown_var2': 'value4', 'unknown_var': 'value3'}

参见 Forwarding Unknown Options .

关于python - 使用 python-click 将未指定的选项添加到 cli 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32944131/

相关文章:

python - django 1.8.3 python manage.py 迁移 Linux

python - 如果/我应该使用线程来更新全局变量怎么办。[Pythonic 方式]

python - 编写一个 for 循环,在使用 python-docx 模块迭代时创建单独的 docx 文件?

python - 如何使用 Python 的 click (Command Line Interface Creation Kit) 包将变量传递给其他方法

python - MySQL Python 不正确的日期时间值

python - 用于通过解析器中的参数从特定模型中删除数据的 BaseCommand

Python click,你能把 -h 作为别名吗

Python 点击​​ : How to print full help details on usage error?

python - click lib 是否提供打印内置帮助消息的方法?

python - 创建一个 Click.Option 并带有仅在默认值为空时显示的提示