• Python超好用的命令行界面实现工具,我保证你肯定不知道...


    前言

    Click 是一个简洁好用的Python模块,它能用尽量少的代码实现漂亮的命令行界面。它不仅开箱即用、还能支持高度自定义的配

    置。

    官方文档:https://click.palletsprojects.com/en/8.0.x/
    
    • 1

    一个简单的示例如下:

    import click
    PYTHON插件/素材/源码加Q群:903971231####
    @click.command()
    @click.option('--count', default=1, help='Number of greetings.')
    @click.option('--name', prompt='Your name',
                  help='The person to greet.')
    def hello(count, name):
        """Simple program that greets NAME for a total of COUNT times."""
        for x in range(count):
            click.echo(f"Hello {name}!")
    
    if __name__ == '__main__':
        hello()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    效果如下:

    在这里插入图片描述

    可见这个模块的强大之处,你只需要在对应的函数上加几个装饰器,就能实现带提示符的命令行界面的创建,相当方便。

    1.准备

    首先需要你的电脑安装好了Python环境,并且安装好了Python开发工具。

    请选择以下任一种方式输入命令安装依赖:

    1. Windows 环境 打开 Cmd (开始-运行-CMD)2. MacOS 环境 打开 Terminal (command+空格输入Terminal)3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
    
    • 1
    • 2
    • 3
    pip install click
    
    • 1

    2.基本使用

    如文首所示的例子一样,@click.option 是最基本的选项,它既可以设定参数默认值,也可以设定必须传入参数:

    @click.command()
    @click.option('--n', default=1) # 设定了默认值
    def dots(n):
        click.echo('.' * n)
        
    
    @click.command()
    @click.option('--n', required=True, type=int) # 设定必须传入参数值
    def dots(n):
        click.echo('.' * n)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    如果你设置了必须传入相关参数,那么在没传入参数的情况下,效果是这样的:

    在这里插入图片描述

    当然,它还支持设定多种参数别名,比如下面的 --from 和 -f 是等效的:

    @click.command()
    @click.option('--from', '-f', 'from_')
    @click.option('--to', '-t')
    def reserved_param_name(from_, to):
        click.echo(f"from {from_} to {to}")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    在这里插入图片描述

    3.多值参数

    如果你的选项需要多个参数,Click也能帮你实现这个需求。

    @click.command()
    @click.option('--pos', nargs=2, type=float)
    def findme(pos):
        a, b = pos
        click.echo(f"{a} / {b}")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可见,通过配置nargs参数,你可以将用户传递的值存入元组,并在代码中解包这个元组拿到所有的值。

    效果如下:

    在这里插入图片描述

    你还可以配置一个参数叫 multiple,这个参数可以让你接受N个值:

    @click.command()
    @click.option('--message', '-m', multiple=True)
    def commit(message):
        click.echo(' '.join(message))
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4.其他功能

    你还可以使用Click来计数,这个使用非常罕见:

    @click.command()
    @click.option('-v', '--verbose', count=True)
    def log(verbose):
        click.echo(f"Verbosity: {verbose}")
    
    • 1
    • 2
    • 3
    • 4

    效果如下:
    在这里插入图片描述

    布尔标志

    此外,Click还带有布尔标志功能,你可以直接使用 “/” 来标志参数为二选一参数,函数中直接就会拿到布尔型的变量:

    import sys
    python插件/源码/素材加Q群:903971231###
    @click.command()
    @click.option('--shout/--no-shout', default=False)
    def info(shout):
        rv = sys.platform
        if shout:
            rv = rv.upper() + '!!!!111'
        click.echo(rv)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    在这里插入图片描述

    选择选项

    你可以直接限定用户的输入范围:

    @click.command()
    @click.option('--hash-type',
                  type=click.Choice(['MD5', 'SHA1'], case_sensitive=False))
    def digest(hash_type):
        click.echo(hash_type)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    提示文本

    在文首提到的例子中,输出了个 “You name:” 的提示,其实是 option 中的prompt参数控制的:

    @click.command()
    @click.option('--name', prompt='Your name please')
    def hello(name):
        click.echo(f"Hello {name}!")
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    最后

    好了,Click的功能就介绍到这里,他还有许多高级的用法,比如动态默认值、回调函数等等,大家可以通过官方文档了解这些高

    级功能的使用方法:

    https://click.palletsprojects.com/en/8.0.x/options/#name-your-options
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    CSS样式预处理:提高开发效率的利器
    CGroups
    如何通过python爬股票接口获取证券交易日?
    try catch 中的finally什么时候运行
    新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)
    Springboot-案例 增删改查二
    四嗪PROTACTetrazine-Ph-PEG4-Ph-aldehyde/NHCO-C3-NHS ester/PEG4-NH-Boc的研究
    【附源码】计算机毕业设计SSM社区新冠疫苗接种管理系统
    43期《深入浅出Pytorch》课程 - Task01:PyTorch的安装和基础知识+前置知识打卡
    人工智能-深度学习之残差网络(ResNet)
  • 原文地址:https://blog.csdn.net/xff123456_/article/details/125410777