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

只执行python中嵌套组列表中的最后一个命令单击,python,python-click,Python,Python Click,我正在创建一组嵌套很深的命令,如click.group()s。当我按下Enter键时,我只想执行cli的最后一个组(命令)输入 例如: cli sub_命令subsub_命令#

我正在创建一组嵌套很深的命令,如click.group()s。当我按下
Enter
键时,我只想执行cli的最后一个组(命令)输入

例如:

cli sub_命令subsub_命令#<--应仅执行subsub_命令
。。。应该只执行最后一个命令
subsub_command
,但是,似乎单击“希望”以执行整个命令堆栈。(奇怪的是,它排除了
subsubsub_命令
?):

$cli sub命令subsub命令
我是root_命令
我是副司令
用法:cli子命令subsub命令[OPTIONS]命令[ARGS]。。。
选项:
--帮助显示此消息并退出。
它似乎正在运行除最后一个命令之外的所有命令。为什么它要显示subsub_命令的帮助,而不是简单地执行它

这是我的点击代码:

导入操作系统
导入系统
导入点击
@click.group(调用\u而不调用\u命令=True)
def cli():
print('我是root_命令')
@cli.group()
def sub_命令(调用_而不调用_命令=真):
打印('我是sub_命令')
@sub_命令组()
def subsub_命令(调用_而不调用_命令=True):
打印('我是subsub_命令')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
cli()

任何想法都是有帮助的。谢谢

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

命令是用
@cli.command

例如:

导入单击
@单击。组()
def cli():
通过
@命令(name='hello')
def hello():
打印(“你好,世界!”)

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

@orvelli-谢谢!是的,我想使用
click.group
作为一个层次结构。这个例子没有显示它,但是我动态地生成这些命令/组,所以我不会提前知道什么是叶/命令,什么是组。我曾希望我可以简单地输入任意深度命令,并让它在该级别执行该命令。基本上是一个可执行
click.group
s的树。有什么想法吗?生成动态命令的用例是什么?无论如何,您可以始终使用
sys.argv[-1]
获取最后一个子命令名。您必须在每个组上添加一个条件,以验证是否需要执行代码看起来
类多命令
有一个
调用_而不使用_命令
,但这似乎没有任何区别。用例是我已经生成了一个非常复杂的,自定义对象中的节点树,我将传入该对象以生成命令。每个节点都包含kwargs和可执行代码。最后,我将调用
mylib.execute(path=“|cli | sub_命令| sub_命令”)
,该路径由cli指定。