1

我想要两个单独的子命令,每个子命令都有不同的选项。

例如 -

command first --one --two
command second --three

选项onetwo仅用于 sub-commandfirstthreesub-command second

我的代码形式如下:

@click.group()
@click.option('--one')
@click.option('--two') 
def cli1():
 print("clione")
@cli1.command()
def first():
   pass

@click.group()
@click.option('--three')
def cli2():
 print("clitwo")
@cli2.command()
def second():
   pass

cli = click.CommandCollection(sources=[cli1, cli2])

if __name__ == '__main__':
     cli()  

但是在运行它之后,我无法为每个子命令运行任何选项。

我用过这个:合并多命令

4

1 回答 1

1

我发现执行子命令的最简单方法是只使用一个组,我通常将该组命名为cli

@click.group()
def cli():
    pass

使用组的名称,声明如下命令:

@cli.command()
def name_of_command():
    ....

测试代码:

import click

@click.group()
def cli():
    pass

@cli.command()
@click.option('--one')
@click.option('--two')
def first(one, two):
    click.echo("clione %s %s" % (one, two))

@cli.command()
@click.option('--three')
def second(three):
    click.echo("clitwo %s" % three)

cli('first --one 4'.split())

结果

clione 4 None
于 2017-05-27T21:03:53.570 回答