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. (30)ASP.NET Core3.1 集成Apollo快速安装与使用

    1.介绍 Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用 ...

  3. MongoDB导入bson文件(元数据),mongorestore命令行方式导入

    MongoDB导入bson文件(元数据),mongorestore命令行方式导入 不推荐使用MongoDB Compass等图形化数据库管理软件,例如MongoDB Compass只能导入json和c ...

  4. Java学习_Java核心类

    字符串和编码 字符串在String内部是通过一个char[]数组表示的,因此,可以按下面的写法: String s2 = new String(new char[] {'H', 'e', 'l', ' ...

  5. 使用ajax请求上传多个或者多个附件

    jsp页面 <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML> ...

  6. idea提交svn不显示新建文件

    在idea中,使用svn提交时可能会出现 预期文件没出现在提交目录里. 是因为没有把新建文件添加到版本控制里. 解决办法:右键选择文件→subversion→add to  vcs. 自动把新文件添加 ...

  7. 基于Let's Encrypt生成免费证书-支持多域名泛域名证书

    目录 客户端 certbot acme.sh 安装acme.sh 1. 自动安装 2. 手动安装 3. 测试收否安装成功 使用acme.sh生成证书 1. HTTP 方式 2. DNS 方式 1. 生 ...

  8. HTTP 常用状态码200 301 302 403 500

    200(OK):成功处理了请求. 301 redirect: 301 代表永久性转移(Permanently Moved) //助记 1 永恒,如果你记住了这一条就算这篇博客没白写.302 redir ...

  9. java面向对象的一些知识

    (1)this和super关键字的用法 this表示调用本类实例方法和成员变量,this引用就是对一个对象的引用,如this.name  表示本类成员变量name,静态方法中不能使用this关键字. ...

  10. Adnc如何本地调试 - 一个轻量级的.Net Core微服务开发框架

    前言     Adnc是一个轻量级的.Net Core微服务开发框架,同样适用于单体架构系统的开发.     如果只是想本地调试,只需要安装必备软件,必备软件除开发工具外,其它软件建议大家都使用`do ...