python click

简介:


from:https://www.cnblogs.com/dachenzi/p/7995539.html


https://github.com/ageitgey/face_recognition/blob/master/face_recognition/face_recognition_cli.py


Click模块

click模块是Flask的作者开发的一个第三方模块,用于快速创建命令行。它的作用与Python标准库的argparse相同,但是,使用起来更简单。

click是一个第三方库,因此使用起来需要先行安装

安装click模块

使用pip命令即可完成模块的安装

1
pip install click

基本使用

Click对argparse的主要改在在于易用性,使用click模块主要分为两个步骤:

  1. 使用@click.command() 装饰一个函数,使之成为命令行接口
  2. 使用@click.option() 等装饰函数,为其添加命令行选项

下列为click官方提供的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
import  click
 
@click .command()
@click .option( '--count' , default = 1 help = 'Number of greetings.' )
@click .option( '--name' , prompt = 'Your name' ,
               help = 'The person to greet.' )
def  hello(count, name):
     """Simple program that greets NAME for a total of COUNT times."""   # 会当作help信息进行输出
     for  in  range (count):
         click.echo( 'Hello %s!'  %  name)
 
if  __name__  = =  '__main__' :
     hello()

在上面的例子中,函数hello接受两个参数,分别是count和name,他们的取值从命令行中获取,这里我们使用了click模块中的command、option、echo,他们的作用如下:

  • command:使函数hello成为命令行接口
  • option:增加命令行选项
  • echo:输出结果,使用echo进行输出是为了更好的兼容性,因为python 2中的print是个语句,python 3中的print 是一个函数

运行上面的脚本,可以通过命令指定--name,--count的值,由于我们在option中指定了prompt选项,那么如果我们执行脚本没有传递name这个参数时,Click会提示我们在交互模式下输入

PS:与argparse模块一样,click也会为我们自动生成提示信息

1
2
3
4
5
6
7
8
9
lidaxindeMacBook - Pro:hello DahlHin$ python3 click模块.py  - - help
Usage: click模块.py [OPTIONS]
 
   Simple program that greets NAME  for  a total of COUNT times.
 
Options:
   - - count INTEGER  Number of greetings.
   - - name TEXT      The person to greet.
   - - help            Show this message  and  exit.

其他参数

option最基本的用法就是通过指定命令行选项的名称,从命令行读取参数值,再将其传递给函数。option常用的参数含义:

  • default: 设置命令行参数的默认值
  • help:参数说明
  • type:参数类型,可以是string、int、float等
  • prompt:当在命令行中没有输入相应的参数时,会更具prompt提示用户输入
  • nargs:指定命令行参数接受的值的个数
  • required:是否为必填参数
1
2
3
4
5
6
7
8
9
10
import  click
 
@click .command()
@click .option( '--pos' ,nargs = 2 , type = float )
 
def  getfloat(pos):
     click.echo( '%s / %s'  %  pos )
 
if  __name__  = =  '__main__' :
     getfloat()

注意:option中定义的参数名称,那么就需要用同名的变量进行接受。

更多参数请参考: http://click.pocoo.org/5/options/#choice-opts 

扩展用法

场景一:我们限定用户输入的值,那么就需要使用Click模块中的Choice函数,Choice的参数是一个列表,该列表中列出所有可能的值。

1
2
3
4
5
6
7
8
9
import  click
 
@click .command()
@click .option( '-c' ,required = True , type = click.Choice([ 'start' , 'stop' ]))    # 限定-c的值为start,或者stop,required表示是否为必填参数
def  getcommand(c):
     click.echo( 'command is %s'  %  c )
 
if  __name__  = =  '__main__' :
     getcommand()

场景二:应用程序从命令行读取密码。 

使用标准库中的argparse模块只能像输入普通参数一样输入密码。这种方式存在一定安全隐患,例如输入的密码会保存在history中,查看命令历史列表就能获取密码

在Click中,这个问题就能完美的解决,只需要是这prompt为True,那么我们就能交互式输入密码,设置hide_input为True,就能隐藏密码,设置confirmation_prompt为True,就可以进行密码的两次验证,使用起来非常便捷。

1
2
3
4
5
6
7
8
9
10
import  click
 
@click .command()
@click .option( '-p' ,prompt = 'Your Password' ,hide_input = True ,confirmation_prompt = True )
 
def  getpassword(p):
     click.echo( 'Your Password is : %s'  %  p)
 
if  __name__  = =  '__main__' :
     getpassword()

目录
相关文章
|
2月前
|
UED 开发者 Python
使用Python构建命令行工具:argparse和click库的使用
使用Python构建命令行工具:argparse和click库的使用
|
数据安全/隐私保护 Python
python click模块参数处理详解
python click模块参数处理详解
python click模块参数处理详解
|
API Android开发 Python
python +selenium识别不来click事件,出现报错
python +selenium识别不来click事件,出现报错
189 0
|
Python
Python编程:使用sys、argparse、click、fire实现命令行参数解析
Python编程:使用sys、argparse、click、fire实现命令行参数解析
191 0
|
Python
Python click命令行工具使用
Python click命令行工具使用
146 0
Python click命令行工具使用
|
机器学习/深度学习 IDE TensorFlow
Python命令行神器之Click
在Python开发和测试过程中主要有两种模式可以选择:脚本模式、命令行模式。在代码的开发和调试过程中使用脚本模式还是很方便的,尤其接触pycharm、eclipse这类强大的IDE,或者配合vs code这种综合的文本编辑器。但是如果使用纯文本编辑器,或者是在做整个系统开发时,与其他模型进行接口调用时,命令行模式就显得非常重要了。目前有很多热门的命令行工具,本文会一一介绍一下,并且重点介绍一下最近发现的一款命令行神器Click。
Python命令行神器之Click
|
JavaScript
Python+selenium 自动化-调用dom节点的click()监听事件,强力操作节点!穿透元素进行点击,节点被遮挡不可点击解决方法
Python+selenium 自动化-调用dom节点的click()监听事件,强力操作节点!穿透元素进行点击,节点被遮挡不可点击解决方法
438 0
|
API 数据库 数据安全/隐私保护
|
机器学习/深度学习 Linux 数据安全/隐私保护