Click库使用方法

@click.group 是 Click 库中的一个装饰器,用于定义一个命令组。命令组允许将多个相关的命令组织在一起,从而实现更好的代码组织和用户交互。

可以通过设置 chain=True 启用命令链模式。在命令链模式下,如果命令返回的是一个函数而不是 None,则会自动将该函数作为下一个命令的函数体,并使用该函数返回值作为下一个命令的参数。这样就可以轻松地构建复杂的命令序列。

import click

@click.group()        # 注意这里没有在@click.group()添加参数‘chain=True’,下面会演示区别
# 创建命令组:@click.group() 装饰器将一个函数标记为命令组,表示这个函数将包含多个子命令。
def main():
    pass

@main.result_callback()
# 注册回调函数:使用 @main.result_callback() 装饰器可以将一个函数注册为结果回调函数,该函数将在所有子命令执行完毕后被调用。
# 处理子命令的结果:结果回调函数可以接收子命令的返回值作为参数,你可以在这个函数中对这些返回值进行处理
def run(methods):
    methods = [key for key in methods]
    print(methods)    
  
@main.command()
# Click 库中的一个装饰器,用于将一个函数标记为一个子命令
# @main.command()没有传入一个字符串参数,因此该命令的名称会默认为被装饰函数的名字,这里为'command1'
def command1():
    print("This is command 1")
    return 1

@main.command('command2xxx')
# @main.command()传入一个字符串参数'command2xxx',因此该命令的名称为'command2xxx'
def command2():
    print("This is command 2")
    return 2

if __name__ == '__main__':
    main()

上面的运行结果为:

$ python main.py command1 command2
Usage: main.py command1 [OPTIONS]
Try 'main.py command1 --help' for help.

Error: Got unexpected extra argument (command2)

报错是因为@click.group()添加参数‘chain=True’,该参数可以控制终端同时执行多个子命令

在@click.group()添加参数‘chain=True’后运行结果为:

$ python main.py command1 command2
This is command 1
This is command 2
[1, None]

@click.command() 是 Click 库中的一个装饰器,用于将一个函数转换为一个可执行的命令。
@click.argument() 装饰器用于添加命令的参数
@click.option() 装饰器用于添加命令的选项

import click

@click.group(chain=True)
def main():
    pass

@cli.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.argument('name')
def hello(count, name):
    for _ in range(count):
        click.echo(f'Hello, {name}!')

@cli.command()
@click.option('--count', default=1, help='Number of farewells.')
@click.argument('name')
def goodbye(count, name):
    for _ in range(count):
        click.echo(f'Goodbye, {name}!')

if __name__ == '__main__':
    main()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值