使用python-click将未指定的选项添加到cli命令 [英] Add unspecified options to cli command using python-click
本文介绍了使用python-click将未指定的选项添加到cli命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用python-click库将未指定的选项添加到cli命令.所以我的cli函数看起来像下面的
I would like to add unspecified options to the cli command using python-click library. So my cli function could look like the following
$ 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
推荐答案
您可以使用ignore_unknown_options
和allow_extra_args
设置传递context
,多余的参数将收集在context.args
列表(['--unknown_var', 'value3', '--unknown_var2', 'value4']
)中.然后,您可以将其转换为字典.
You can pass context
with ignore_unknown_options
and allow_extra_args
settings, the extra arguments will be collected in context.args
list (['--unknown_var', 'value3', '--unknown_var2', 'value4']
). Then you can transform it to dict.
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 xrange(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-click将未指定的选项添加到cli命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文