当前位置: 首页 > 面试题库 >

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

宋耀
2023-03-14
问题内容

我想使用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_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 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'}

请参阅转发未知选项。



 类似资料:
  • 问题内容: 我有一个追随者。我添加了 2 x双引号, 以便可以在中将其声明为变量,实际上,它包含属性的双引号的一倍。完整的示例代码在这个小提琴中。 我正在使用,但也可以使用,因此对于任何一种工作解决方案都将不胜感激。 如果我的密钥与列表中的项目匹配,我想添加验证及其子密钥。我有三种情况,下面的代码按注释对它们进行了解释。 该迭代函数显示如下。 我的决赛应该如下图所示。 我无法实现所有三种情况。有人

  • 使用()全局安装angular cli,但当我试图使用创建项目时,抛出错误: ng:找不到命令

  • 问题内容: 我希望此javascript在id =“ mainSelect”的选择中创建12到100个选项,因为我不想手动创建所有选项标签。你能给我一些指导吗?谢谢 问题答案: 您可以通过一个简单的循环来实现: JS Perf比较了我和imeVidas的答案,是因为我认为他的表情比我的看起来更容易理解/直观,而且我想知道这将如何转化为实现。根据Chromium14/Ubuntu11.04的说法,其

  • 问题内容: 对于selenium,我有很多用于chrome的选项,我需要通过将该选项传递给远程webdriver 。在此页面上,有一个有关如何执行此操作的Java示例,但是如何在python中执行此操作?该文档非常差。 这是我到目前为止的代码: 知道要这样做吗?还是在哪里可以找到适当的文档? 问题答案: 用于从选项中获取功能:

  • 我想创建一个列表视图,只能通过鼠标进行多项选择(不按住ctrl或Shift) 单击某个项目应选择此项目。如果选择了其他项目,请将此新项目添加到所选列表中。以前选中此项目时,请取消选中它。 我不想保留选定的项目。selectionModel上有一个名为“selectIndices()”的方法,它只接受一个或多个整数,而不是整数列表。。。 有男孩有主意吗?

  • 在获得bootstrap及其与npm的依赖关系之后,我们的第一种方法是将它们添加到中: 并将它们导入 这在中工作得很好,但一旦我们生成了带有标志的构建,所有这些依赖项就从中消失了(令人惊讶!)。 我们打算如何在一个用angular-cli生成的项目中处理这样的场景(即加载引导脚本)? 我们有以下想法,但我们真的不知道该走哪条路。 > 是否使用CDN?但我们更愿意提供这些文件以保证它们可以被使用 是