click的简单使用

先通过一个简单的例子来认知一下click把

import click

@click.command()
@click.option('-p', '--port', default=('Cat', 5000), type=(str, int), help="localhost:port")
def run(port, password):
"""This is to simulate the local running port"""
click.echo("%s Run on http://127.0.0.1:%d" % port) if __name__ == '__main__':
run()

我们来分析一下这个代码,从而入门click把

  • 首先,通过装饰器click.command()让这个函数成为一个命令行工具
  • 然后通过装饰器click.option()为这个函数的调用添加命令行选项
    • -p --port呢就是短选项和完整选项了,我们使用命令的时候,可以用-p+待传入的参数,也可以是--port+待传入的参数
    • default则是设置默认参数
    • type用于指定传入参数的类型,在4.0版本以后,这个代替了nargs参数,可以用来设置传入多个值,并且规定了类型。
    • help则是提示语,当使用--help的时候可以查看开发者的帮助文档
  • 设置了选项之后,我们需要在函数的形参列表中写上相应的参数名,方便之后的使用
  • 这里用click.echo()代替了print(),因为前者可以无需考虑python的版本。

按照上面这个示例,平常很多需求已可以满足,接下来再介绍一些option的一些参数,以及一些别的装饰器。

  • prompt 这个是用来提示输入参数的

    @click.command()
    @click.option('-p', '--port', type=int, prompt=True, help="localhost:port")
    def run(port):
    """This is to simulate the local running port"""
    click.echo("Run on http://127.0.0.1:%d" % port) if __name__ == '__main__':
    run()
    结果如下:
    (flaskLearn) D:\>python try.py
    Port: 8080
    Run on http://127.0.0.1:8080

    这个你也可以自己定义提示语,将prompt后的True改成自己的提示语即可

  • required=True ,这个参数默认是False,即非必须调用,而若是要必须选择,则将其设为True。option中的参数若是没有设置default,在没有使用该选项的时候其值为None。

  • 多选项multiple=True 默认False。看如下例子:

    @click.command()
    @click.option('-p', '--port', multiple=True)
    def run(port):
    print("Run on", port)
    (flaskLearn) D:\>python try.py -p 8080 -p 8000 -p 8081
    Run on ('8080', '8000', '8081')

    这个与之前的type指定多选项有些类似,但是这个并不指定传入参数值的数量,并且使用的也是同一个参数,二者结合使用需要选择使用。

  • @click.password_option() 这个装饰器用来输入密码,以及确认密码的,示例如下:

    @click.command()
    @click.password_option()
    def encrypt(password):
    click.echo('Encrypting password to %s' % password.encode('rot13'))

    它的效果与如下的一样:

    @click.command()
    @click.option('--password', prompt=True, hide_input=True,
    confirmation_prompt=True)
    def encrypt(password):
    click.echo('Encrypting password to %s' % password.encode('rot13'))

    结果如下:

    $ encrypt
    Password:
    Repeat for confirmation:
    Encrypting password to frperg

    然后第二段代码可以自行选择是否确认和是否隐藏。

  • 还有一个就是@click.confirmation_option(),这个等于也是封装了Yes参数,示例如下:

    @click.command()
    @click.confirmation_option(prompt='Are you sure you want to drop the db?')
    def dropdb():
    click.echo('Dropped all tables!')

    与一下代码效果相同:

    def abort_if_false(ctx, param, value):
    if not value:
    ctx.abort() @click.command()
    @click.option('--yes', is_flag=True, callback=abort_if_false,
    expose_value=False,
    prompt='Are you sure you want to drop the db?')
    def dropdb():
    click.echo('Dropped all tables!')

    结果如下:

    $ dropdb
    Are you sure you want to drop the db? [y/N]: n
    Aborted!
    $ dropdb --yes
    Dropped all tables!

That's All

想看更多用法和更详细的讲解可以参考一下链接:https://click-docs-zh-cn.readthedocs.io/zh/latest/

click的简单使用的更多相关文章

  1. python之Click的简单应用

    一.介绍 Click是一个Python包,用于以可组合的方式创建漂亮的命令行界面,只需要很少的代码.这是"命令行界面创建工具包".它具有高度可配置性,但具有开箱即用的合理默认值. ...

  2. jQuery-append添加元素click无效

    很久没有使用jQuery,做项目的时候遇到一个小问题就是网页加载之后的append的元素是可以执行click事件,网页加载完成之后的,再次append的元素不执行click事件,简单的通过ul模拟一下 ...

  3. Python 命令行之旅:深入 click 之参数篇

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  4. jquery click 与原生 click 的区别

    $.click() 触发的事件中没有 event.originalEvent , 不同触发 href="" 中的内容 $[0].click() 可以 <script type ...

  5. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  6. 快速上手 Python 命令行模块 Click

    关于Click? 说下 Click 模块是干啥的,简单说,它就是把我们的 Python 脚本的一些函数,通过 添加带有 Click 关键字的装饰器进行装饰进而将函数调用的形式转化为命令行传参的形式然后 ...

  7. Vue框架简介及简单使用

    目录 一.前端框架介绍 二.vue框架简介 三.vue使用初体验 1. vue如何在页面中引入 2. 插值表达式 3. 文本指令 4. 方法指令(事件指令) 5. 属性指令 四.js数据类型补充 1. ...

  8. For Freedom —— 代理篇

    人生在世,总是受到各种约束.心脏跳动都感到困难呢!! 公司内网,安全区,fq等等等~~我们需要一个稳定易用高性能高弹性的代理工具!3Proxy,Here it is, CLICK ME!! 简单介绍下 ...

  9. Python WebDriver自动化测试

    转载来自: http://www.cnblogs.com/fnng/p/3160606.html Webdriver Selenium 是 ThroughtWorks 一个强大的基于浏览器的开源自动化 ...

随机推荐

  1. 无法获得VMCI驱动程序的版本:句柄无效 (亲测有效! )

    今天在学习Linux 的时候 启动VM时出现了这个问题, 搞了很久终于弄好了, 就写篇博客来记录一下,帮助一下大家,如果对大家有帮助,还请各位哥哥姐姐点个关注,你的支持就是我坚持下去的动力 ! 文章目 ...

  2. Synchronized用法原理和锁优化升级过程(面试)

    简介 多线程一直是面试中的重点和难点,无论你现在处于啥级别段位,对synchronized关键字的学习避免不了,这是我的心得体会.下面咱们以面试的思维来对synchronized做一个系统的描述,如果 ...

  3. ASP.NET Core 3.1使用Swagger API接口文档

    Swagger是最流行的API开发工具,它遵循了OpenAPI规范,可以根据API接口自动生成在线文档,这样就可以解决文档更新不及时的问题.它可以贯穿于整个API生态,比如API的设计.编写API文档 ...

  4. matplotlib学习日记(十一)---坐标轴高阶应用

    (一)设置坐标轴的位置和展示形式 (1)向画布中任意位置添加任意数量的坐标轴 ''' 通过在画布的任意位置和区域,讲解设置坐标轴的位置和坐标轴的展示形式的实现方法, 与subplot,subplots ...

  5. Linux(Centos7)安装、使用 Docker

    一.Linux(CentOS7) 上安装 docker 1.docker 是什么? docker 是一种 虚拟化容器技术,一个开源的应用容器引擎. 基于镜像,可以秒级启动各种容器(运行一次镜像就生成一 ...

  6. SpringBoot 与 SpringSecurity

    一.环境搭建 (1)IDEA创建SpringBoot工程 (2)导入依赖 (3)如果是thymeleaf项目 需导入thymeleaf整合security的依赖 (4)编写配置类(采用AOP横切入程序 ...

  7. [论文分享] DHP: Differentiable Meta Pruning via HyperNetworks

    [论文分享] DHP: Differentiable Meta Pruning via HyperNetworks authors: Yawei Li1, Shuhang Gu, etc. comme ...

  8. CentOS7离线安装mysql5.6

    下载mysql5.6,系统选择redhat,版本选择RHEL7,下载RPM Bundle后得到一个tar文件.这里得到文件MySQL-5.6.44-1.el7.x86_64.rpm-bundle.ta ...

  9. [LeetCode]690. Employee Importance员工重要信息

    哈希表存id和员工数据结构 递归获取信息 public int getImportance(List<Employee> employees, int id) { Map<Integ ...

  10. 设置Safari禁止访问某个网站

    经过调查有三种方法可以做到:1,创立新的登录账户,然后进行家长控制:2,安装第三方的应用软件Self Control:3,其他方式 推荐大家使用下面的这个方式:三步即可 1:打开访达(Finder), ...