如何使用python-click为同一组中的cmd使用相同的选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python-click为同一组中的cmd使用相同的选项相关的知识,希望对你有一定的参考价值。

我有下面的代码,foo和bar都有用户选项,我需要写:

@click.option('--user', default='*')

每个功能两次。

但实际上我有很多这样的cmds,所以它是很多重复的代码。

@click.group(help="cmd group")
def main():
    pass


@click.command(name='foo')
@click.option('--user', default='*')
def foo(user):
    click.secho(user, fg='green')


@click.command(name='bar')
@click.option('--user', default='*')
def bar(user):
    click.secho(user, fg='green')


main.add_command(foo)
main.add_command(bar)

我想要的是将相同的选项添加到cmd组中的一个位置。我可以点击这么做吗?

答案

在上下文中传递它:

@click.group(help="cmd group")
@click.option('--user', default='*')
@click.pass_context
def main(ctx, user):
    ctx.obj = {'user': user}


@click.command(name='foo')
@click.pass_context
def foo(ctx):
    click.secho(ctx.obj['user'], fg='green')


@click.command(name='bar')
@click.pass_context
def bar(ctx):
    click.secho(ctx.obj['user'], fg='green')


main.add_command(foo)
main.add_command(bar)

mycli --user cats bar将回应bar子命令中的猫

另一答案

方法1.我认为@ click.option()的第一个参数的名称是para

USER_DEFAULT = {'para' : '--user', 'default' : '*'}

@click.option(**USER_DEFAULT)

方法2.将它包装在你自己的装饰有默认参数的装饰器中。

以上是关于如何使用python-click为同一组中的cmd使用相同的选项的主要内容,如果未能解决你的问题,请参考以下文章

如何停止在 FaceAPI 人员组中再次添加同一个人

仅显示与登录用户在同一组中的用户

AWS ELB - 服务 A 无法连接到同一安全组中的服务 B

Ionic - 向同一组中的用户推送通知

将 2 个单选按钮分组到 Windows 应用程序的同一组中

使用 h5py 从 h5 文件中的同一组中读取多个数据集