我想使用 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
最佳答案
你可以通过 context
和 ignore_unknown_options
和 allow_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'}
关于python - 使用 python-click 将未指定的选项添加到 cli 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32944131/