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!!
我定义了一个 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!!