我有一个click.group()
定义,其中包含大约 10 个命令。我了解如何在命令中的代码之前使用组来运行代码,但我也想在每个命令运行之后运行一些代码。点击可以吗?
问问题
2399 次
2 回答
24
你可以使用@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
于 2016-07-03T08:29:50.103 回答
0
这对我有用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!!
于 2021-05-30T03:38:22.023 回答