在python点击中,只执行嵌套组列表中的最后一个命令



我正在创建一组深度嵌套的命令作为click.group((s。我只想在按下Enter键时执行最后一个输入到cli的组(命令(。

例如:

cli sub_command subsub_command # < -- should only execute subsub_command

应该只执行最后一个命令subsub_command,但是,似乎单击want来执行完整的命令堆栈。(奇怪的是,它不包括subsub_command?(:

$ cli sub-command subsub-command 
I am the root_command
I am sub_command
Usage: cli sub-command subsub-command [OPTIONS] COMMAND [ARGS]...
Options:
--help  Show this message and exit.

除了最后一个命令之外,它似乎正在运行所有内容。为什么它显示subsub_command的帮助而不是简单地执行它?

这是我的点击代码:

import os
import sys
import click
@click.group(invoke_without_command=True)
def cli():
print('I am the root_command')
@cli.group()
def sub_command(invoke_without_command=True):
print('I am sub_command')
@sub_command.group()
def subsub_command(invoke_without_command=True):
print('I am the subsub_command')
if __name__ == '__main__':
cli()

任何想法都是有益的。谢谢

这是因为您在反复使用@cli.group

使用@cli.command定义命令

例如:

import click

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

@cli.command(name='hello')
def hello():
print('hello world!')

@group的思想是将多个命令组合在一起,group方法用于定义整个组的公共上下文代码。

最新更新