首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python-click向cli命令添加未指定的选项

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

Stack Overflow用户
提问于 2015-10-05 08:25:03
回答 1查看 6.9K关注 0票数 25

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

代码语言:javascript
复制
$ my-cmd --option1 value1 --options2 value2 --unknown_var value3

我现在的代码是:

代码语言:javascript
复制
import click

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

我希望看到的情况如下:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-05 10:31:59

您可以通过contextignore_unknown_optionsallow_extra_args设置传递额外的参数,这些参数将在context.args list (['--unknown_var', 'value3', '--unknown_var2', 'value4'])中收集。然后你就可以把它转换成迪克了。

代码语言:javascript
复制
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)})

示例

代码语言:javascript
复制
python cli.py --option1 value1 --option2 value2 --unknown_var value3 --unknown_var2 value4
>> {'unknown_var2': 'value4', 'unknown_var': 'value3'}

转发未知选项

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32944131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档