详解python的argpare和click模块小结

 更新时间:2019年03月31日 16:53:12   作者:bainianminguo  
这篇文章主要介绍了详解python的argpare和click模块小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、argparse模块

1、模块说明

# argparse是python的标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块,argparse能够根据程序中的定义的sys.argv中解析出这些参数,

# 并自动生成帮助和使用信息

2、模块常用的参数

# 参数说明:
# name/flag:参数的名字
# action:遇到参数的动作,默认值是store
# nargs:参数的个数,可以是具体的数字,或者是+或者是*,*表示0个或者多个参数,+号表示1个或者多个参数
# default:不指定参数时的默认值
# type:# 参数的类型
# choice:参数允许的值
# required:可选参数是否可以省略
# help:参数的帮助信息
# dest:解析后参数的名称 

  

3、使用方法

import argparse
def _argparse():
 parseobj = argparse.ArgumentParser(description="This is script help")
 # 参数说明:
 # name/flag:参数的名字
 # action:遇到参数的动作,默认值是store
 # nargs:参数的个数,可以是具体的数字,或者是+或者是*,*表示0个或者多个参数,+号表示1个或者多个参数
 # default:不指定参数时的默认值
 # type:# 参数的类型
 # choice:参数允许的值
 # required:可选参数是否可以省略
 # help:参数的帮助信息
 # dest:解析后参数的名称
 parseobj.add_argument("--host",action='store',dest='host',required=True,default="127",help="This is a host ip address",type=int)

 parseobj.add_argument("--P",'--passwd',action='store', dest='pwd', required=True, default="admin123.",help="This is a host password", type=str)
 parseobj.add_argument("--V", '--version', action='version', version="%(prog)s 0.1")
 return parseobj.parse_args()
if __name__ == '__main__':
 res = _argparse()
 print(res.pwd)
 print(res.host)

4、最后我们测试一下这个模块

a、测试 -h选项,这里-h和--help的效果是一样的

b、测试--V选项和--version选项

c、测试一下输入的正确的参数

二、click模块

1、模块介绍

click模块的作者就是Flask的作者,(Armin Ronacher)开发的一个第三方的模块,用于快速创建命令行。他的作用用python标准库中的argparse相同,但是

使用更加简单,click相对于标准库的argparse,就好比requests库相当于标准库的urllib库,click是一个第三的库,因此在使用之前需要安装

2、模块安装

E:\python3\Scripts>pip3.6.exe install click

3、使用步骤

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

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

c、先看一个官方的例子

import click

 

# click模块的作者就是Flask的作者,(Armin Ronacher)开发的一个第三方的模块,用于快速创建命令行。他的作用用python标准库中的argparse相同,但是

# 使用更加简单,click相对于标准库的argparse,就好比requests库相当于标准库的urllib库,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):

 for x in range(count):

  click.echo("hello {name}".format(name = name))

 

if __name__ == '__main__':

 hello()

其他的应该大家都可以看懂,这个prompt的作用是什么呢,实际就是如果我们没有为name传参数,他就会给出一个提示

下面这个例子是完整的传参

4、常用参数

常用参数

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

help:参数说明

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

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

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

a、测试一下nargs参数

@click.command()
@click.option('--post',nargs=2,help='Number of post')
def hello(post):
 print(post)

if __name__ == '__main__':
 hello()

测试结果

b、测试click.choice选项

@click.command()
@click.option('--hash',type=click.Choice(["md5","sha1"]),help='type of hash')
def hello(hash):
 print(hash)
if __name__ == '__main__':
 hello()

测试结果

c、如果使用命令行输入密码,则默认的情况是有很大的安全隐患的,因为输入密码的命令在history中,其他用户就可以通过命令的历史列表,拿到我们的密码,click可以为我们解决这个问题

@click.command()
@click.option('--pwd',prompt=True,hide_input=True,help='passwd of user',confirmation_prompt=True)
def hello(pwd):
 print(pwd)
if __name__ == '__main__':
 hello()

prompt:要设置为True

hide_input:要设置为True

confirmation_prompt:会自动为我们进行密码的二次验证

测试结果如下

错误的输入

正确的输入

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • PyTorch之torch.randn()如何创建正态分布随机数

    PyTorch之torch.randn()如何创建正态分布随机数

    这篇文章主要介绍了PyTorch之torch.randn()如何创建正态分布随机数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • PIP安装python包出现超时问题的解决

    PIP安装python包出现超时问题的解决

    这篇文章主要介绍了PIP安装python包出现超时问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python中用Descriptor实现类级属性(Property)详解

    Python中用Descriptor实现类级属性(Property)详解

    这篇文章主要介绍了Python中用Descriptor实现类级属性(Property)详解,本文先是讲解了decorator是什么,然后给出了通过Descriptor来做一个类级的Property实例,需要的朋友可以参考下
    2014-09-09
  • python利用scatter绘画散点图

    python利用scatter绘画散点图

    这篇文章主要介绍了python利用scatter绘画散点图,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-06-06
  • Django中的JWT身份验证的实现

    Django中的JWT身份验证的实现

    这篇文章主要介绍了Django中的JWT身份验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Python UnicodeEncodeError: ''gbk'' codec can''t encode character 解决方法

    Python UnicodeEncodeError: ''gbk'' codec can''t encode chara

    这篇文章主要介绍了Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法,需要的朋友可以参考下
    2015-04-04
  • Python自动化处理Excel数据的操作过程

    Python自动化处理Excel数据的操作过程

    在实际数据处理和分析过程中,经常会遇到需要从大量数据中提取出特定日期范围内的信息的需求,本文将介绍如何使用Python的pandas库来处理Excel文件,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • Python实现新型冠状病毒传播模型及预测代码实例

    Python实现新型冠状病毒传播模型及预测代码实例

    在本篇文章里小编给大家整理的是关于Python实现新型冠状病毒传播模型及预测代码内容,有兴趣的朋友们可以学习下。
    2020-02-02
  • 使用python制作一个压缩图片小程序

    使用python制作一个压缩图片小程序

    这篇文章主要为大家详细介绍了如何使用python制作一个压缩图片小程序,文中的示例代码简洁易懂,具有一定的学习价值,感兴趣的小伙伴可以了解下
    2023-10-10
  • python简单验证码识别的实现方法

    python简单验证码识别的实现方法

    这篇文章主要给大家介绍了关于python简单验证码识别的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05

最新评论