当前位置: 首页 > 工具软件 > Click-pallets > 使用案例 >

python常用库click(2个def快速上手)

荆城
2023-12-01

python常用库click(超快上手)



前言

Click 库简洁好用,可以使用python编写自己的运维脚本,非常方便,我整理了常用,请看下文


一、Click是什么?

Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现。

二、使用步骤

1.基本使用

代码如下(示例):

import click


# default:给命令行选项添加默认值
# help:给命令行选项添加帮助信息
# type:指定参数的数据类型,例如int、str、float
# required:是否为必填选项,True为必填,False为非必填
# prompt:在命令行提示用户输入对应选项的信息
# nargs:指定命令行选项接收参数的个数,如果超过则会报错,不超过不报错。(默认参数 default 用list tuple 都可以哦~~)
# multiple:批量参数 设置默认的话就是list了,看下面例子  python hello.py -n asihacker -i game -i study -c 10
# required:参数是否是必须的
# hide_input:密码输入
# confirmation_prompt:确定输入 就是输入密码2次对比是不是一样的~~~

@click.command()
@click.option('--name', '-n', prompt='你的名字是什么?', help='输入你的名字', type=str, required=True)
@click.option('--birthday', '-b', default=[1995, 2, 11], nargs=3, help='输入你的具体年月日 -b 1995 2 11',
              type=(int, int, int))  # 这里可以定义每一个参数的类型
@click.option('--interest', '-i', default=['game', 'mp3', 'mp4'], multiple=True, type=str,  # type=list 你会看到不一样的结果~
              help='输入你的兴趣爱好 -i game -i study')
@click.option('--password', '-p', prompt='请输入你的密码', hide_input=True, confirmation_prompt=True, required=True,
              help='密码会帮你隐藏哦!')
@click.option('--count', '-c', default=1, help='你要打印多少次?')
@click.confirmation_option(prompt='你确定你输入的对吗?')  # ==Are you sure? [y/N]:
def hello(name, birthday, interest, password, count):
    for x in range(count):
        click.echo(f'你好,{name}!你的生日是{birthday},你的爱好是{interest},你的密码是{password}')


if __name__ == '__main__':
    hello()
# python hello.py

2.命令组使用

代码如下(示例):

import click


@click.group()  # 命令的总入口
def cli():
    pass


@cli.command()  # `cli`表示该方法隶属于@click.group
@click.argument('name')  # 传参的时候仍然使用`click` 而不是`cli`
def cmd1(name):
    print("执行cmd1")


@cli.command()  # `cli`表示该方法隶属于@click.group
@click.argument('name')  # 传参的时候仍然使用`click` 而不是`cli`
def cmd2(name):
    print("执行cmd2")


if __name__ == "__main__":
    cli()  # 这里要调用`cli()`而不能调用子命令

其他参数设置 可以看一。


总结

更加详细的教程可以参考链接 https://www.cnblogs.com/alexkn/p/6980400.html day day up ~~~
 类似资料: