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. 全栈工程师-史上最强VSCODE插件-提高开发效率

    当你点进来的时候 ,你可能是被标题吸引进来的,也有可能是 偶然间,看到的,首先恭喜你,已经准备好向全栈开发工程师靠近 ,那我们不说废话,直接开始,咱们先从安装步骤开始讲起 ,因为有些人连插件在哪都不知 ...

  2. 【译】理解Rust中的Futures(二)

    原文标题:Understanding Futures in Rust -- Part 2 原文链接:https://www.viget.com/articles/understanding-futur ...

  3. Ubuntu虚拟机无网络连接的问题

    记录一下: 通过dhcp动态分配ip地址. sudo dhclient -v 应该就能解决了.

  4. Python之selenium创建多个标签页

    最近在做一个项目,需要用到cookies登录,想法是,在同一个浏览器下,打开两个标签页进行.让其自动获取cookies,先记录,不行的话,到时候再手动加载cookies. 1 ''' 2 #selen ...

  5. RPC 核心,万变不离其宗

    微信搜 「yes的练级攻略」干货满满,不然来掐我,回复[123]一份20W字的算法刷题笔记等你来领. 个人文章汇总:https://github.com/yessimida/yes 欢迎 star ! ...

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

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

  7. sqlserver varchar和Nvarchar区别

    sql server中的varchar和Nvarchar有什么区别?   答:varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 ...

  8. 基于frp的内网穿透实例2-通过自定义域名访问部署于内网的 web 服务

    原文地址:https://wuter.cn/1837.html/ 一.想要实现的功能 1.将部署在自己电脑上的网站用于公网访问. 2.将未备案域名解析至国内服务器(即我宿舍的老母鸡上). 二.服务端配 ...

  9. Hello Python!用 Python 写一个抓取 CSDN 博客文章的简单爬虫

    网络上一提到 Python,总会有一些不知道是黑还是粉的人大喊着:Python 是世界上最好的语言.最近利用业余时间体验了下 Python 语言,并写了个爬虫爬取我 csdn 上关注的几个大神的博客, ...

  10. 关于STM32的CAN的过滤器

    关于STM32的CAN的过滤器STM32普通型芯片的CAN有14组过滤器组,互联型有28组过滤器组.一般我们用的都是普通型的,所以在本文中可以说STM32有14组过滤器组.根据配置,每1组过滤器组可以 ...