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. json JSON_UNESCAPED_UNICODE 防止中文乱码

    json_encode(['content'=>$content],JSON_UNESCAPED_UNICODE)

  2. CODING DevOps 线下沙龙回顾二:SDK 测试最佳实践

    讲师:潘志刚 声网质量效能部门负责人,超过 14 年服务器.移动终端.音视频编解码以及汽车电子等跨行业从业经历,负责建立测试基础架构和自动化测试方案,主持搭建持续集成测试生态体系.现任声网质量效能部门 ...

  3. c# 递归 yield关键字的用法

    1.yield实现的功能 yield return: 先看下面的代码,通过yield return实现了类似用foreach遍历数组的功能,说明yield return也是用来实现迭代器的功能的. u ...

  4. python的常量与变量

    1.Python属于强类型编程语言,Python解释器会根据赋值或运算来自动判断变量的类型.Python还是一种动态类型语言,变量的类型也是可以随时变化的. >>> x=3 > ...

  5. 老吕教程--02后端KOA2框架自动重启编译服务(nodemon)

    上一篇讲完搭建Typescritp版的Koa框架后,F5运行服务端,页面进行正常显示服务. 今天要分享的是,如果要修改服务端代码,如果让编译服务自动重启,免去手动结束服务再重启的过程. 自动重启服务需 ...

  6. [译] ConstraintLayout 可视化[Design]编辑器(这到底是什么)[第四部分]

    原文地址:Testing Views in Isolation with Espresso 原文作者:Ataul Munim 译文出自:掘金翻译计划 译者:yazhi1992 校对者:lovexiao ...

  7. javap使用

    在反编译前你当然需要先编译这个类了进入当前目录下:javac -g SynchronizedTest.java(使用-g参数是因为要得到下面javap -l时的输出需要使用此选项) 编译完成后,我们在 ...

  8. [LeetCode]501. Find Mode in Binary Search Tree二叉搜索树寻找众数

    这次是二叉搜索树的遍历 感觉只要和二叉搜索树的题目,都要用到一个重要性质: 中序遍历二叉搜索树的结果是一个递增序列: 而且要注意,在递归遍历树的时候,有些参数如果是要随递归不断更新(也就是如果递归返回 ...

  9. 96. Unique Binary Search Trees1和2

    /* 这道题的关键是:动态表尽量的选取,知道二叉搜索树中左子树的点都比根节点小,右子树的点都比根节点大 所以当i为根节点,左子树有i-1个点,右子树有n-i个点,左右子树就可以开始递归构建,过程和一开 ...

  10. [标签] Java学习日报7.28

    package minG;import java.util.*;public class MinG { public static void main(String[] args) { // TODO ...