python3之 click 模块

Click 是用 Python 写的一个第三方模块,用于快速创建命令行。我们知道,Python 内置了一个 argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click 相比于 argparse.

Click 的使用大致有两个步骤:

  1. 使用 @click.command() 装饰一个函数,使之成为命令行接口;

  2. 使用 @click.option() 等装饰函数,为其添加命令行选项等。

import click

@click.command()
@click.option('--param', default=default_value, help='description')
def func(param):
    pass

例子

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import click

@click.command()
@click.option('--c', default=1, help="input check password count")
@click.option('--pwd', prompt="your password:", help="input check password")
def checkpwd(c, pwd):
    for x in range(c):
        click.echo("your password:{0}".format(pwd))

if __name__ == "__main__":
    checkpwd()
(upy3Env)***wshu/testModule# python demo.py 
your password:: 123456
your password:123456


# click 自动生成了 "--help" 用法
(upy3Env)***wshu/testModule# python demo.py --help
Usage: demo.py [OPTIONS]

Options:
  --c INTEGER  input check password count
  --pwd TEXT   input check password
  --help       Show this message and exit.

再运行下制定 c 和 pwd 参数的结果

(upy3Env) *****wshu/testModule# python demo.py --c 5 --pwd wangshu123
your password:wangshu123
your password:wangshu123
your password:wangshu123
your password:wangshu123
your password:wangshu123

click.option

option 最基本的用法就是通过指定命令行选项的名称,从命令行读取参数值,再将其传递给函数。在上面的例子,我们看到,除了设置命令行选项的名称,我们还会指定默认值,help 说明等,option 常用的设置参数如下:

  • default: 设置命令行参数的默认值

  • help: 参数说明

  • type: 参数类型,可以是 string, int, float 等

  • prompt: 当在命令行中没有输入相应的参数时,会根据 prompt 提示用户输入

  • nargs: 指定命令行参数接收的值的个数

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import click

@click.command()
@click.option('--c', default=1, help="input check password count")
@click.option('--pwd', propmt="input password", help='input check password')
def test0(c, pwd):
    for x in range(c):
        click.echo("your password{0}".format(pwd))


@click.command()
@click.option('--rate',type=float, help="rate type >> float") # 设定类型为float
def test1(rate):
    click.echo("rate:{0}".format(rate))


@click.command()
@click.option('--sex', type=click.Choice(['man','woman']))#限定值 click.Choice(seq)
def test2(sex):
    click.echo("sex:{0}".format(sex))


@click.command()
@click.option('--v', nargs=2, type=int, help='function add')
@click.option('--reson', help='reson doc')
def test3(v, reson):
    click.echo('add result{0}, reson{1}'.format(v[0]+v[1], reson))



if __name__ == "__main__":
    test3()

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值