使用python单击将未指定的选项添加到cli命令
我想使用python click library向cli命令添加未指定的选项。因此,我的cli函数可以如下所示使用python单击将未指定的选项添加到cli命令,python,python-click,Python,Python Click,我想使用python click library向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, optio
$ 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\u unknown\u选项
和allow\u extra\u args
设置,额外的参数将收集在context.args
列表中(['--unknown\u var',value3','--unknown\u var2',value4']
)。然后你可以把它转换成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 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'}
请参阅。如果您愿意接受
my cmd--option1 value1--unknown\u var value3--另一个未知var值4
,那么您可以一起使用和。此外,如果您想支持args(以-)和options(以-)的话,您可能需要使用类似{(ctx.args[i][2:]If str ctx.args[i])。startswith(“-”)else ctx.args[i][1:):范围(0,len(ctx.args),2)中的i的ctx.args[i+1]
我将使用带列表理解的剥离和拆分。这看起来更干净:data=dict([item.strip('--').split('='))用于ctx.args中的项)