Python 单击:让组在命令后执行代码

Python Click: Having the group execute code AFTER a command

我定义了一个 click.group(),里面有大约 10 个命令。我了解如何在命令中的代码之前使用组 运行 代码,但我也想 运行 每个命令之后的一些代码是 运行。可以点击吗?

您可以使用 @resultcallback 装饰器

@click.group()
def cli():
    click.echo('Before command')


@cli.resultcallback()
def process_result(result, **kwargs):
    click.echo('After command')


@cli.command()
def command():
    click.echo('Command')


if __name__ == '__main__':
    cli()

输出:

$ python cli.py command
Before command
Command
After command

这对我有用Click==7.0。没有尝试过 resultcallback

$ cat check.py 
import click

@click.group()
@click.pass_context
def cli(ctx):
    print("> Welcome!!")
    ctx.call_on_close(_on_close)

def _on_close():
    print("> Done!!")

@cli.command()
def hello():
    print("Hello")

if __name__ == '__main__':
    cli()

输出:

$ python3 check.py hello
> Welcome!!
Hello
> Done!!

Documentation