详解python的argpare和click模块小结


Posted in Python onMarch 31, 2019

一、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)

详解python的argpare和click模块小结

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

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

详解python的argpare和click模块小结

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

详解python的argpare和click模块小结

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

详解python的argpare和click模块小结

二、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()

详解python的argpare和click模块小结

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

详解python的argpare和click模块小结

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

详解python的argpare和click模块小结

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()

测试结果

详解python的argpare和click模块小结

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()

测试结果

详解python的argpare和click模块小结

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:会自动为我们进行密码的二次验证

测试结果如下

错误的输入

详解python的argpare和click模块小结

正确的输入

详解python的argpare和click模块小结

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

Python 相关文章推荐
python下载文件时显示下载进度的方法
Apr 02 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
python实现12306火车票查询器
Apr 20 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
Python 中使用 PyMySQL模块操作数据库的方法
Nov 10 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
python3跳出一个循环的实例操作
Aug 18 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 Python
linux安装python修改默认python版本方法
Mar 31 #Python
Django中使用Whoosh进行全文检索的方法
Mar 31 #Python
Python实现的爬取小说爬虫功能示例
Mar 30 #Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 #Python
Python函数装饰器常见使用方法实例详解
Mar 30 #Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 #Python
Python函数的参数常见分类与用法实例详解
Mar 30 #Python
You might like
推荐php模板技术[转]
2007/01/04 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
JS实现页面打印功能
2017/03/16 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
python发送邮件实例分享
2017/07/28 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
酒店人事专员岗位职责
2013/12/19 职场文书
酒店总经理助理职责
2014/02/12 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
五好家庭申报材料
2014/12/20 职场文书
创先争优活动个人总结
2015/03/04 职场文书
食堂管理制度范本
2015/08/04 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS