详解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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
python一键升级所有pip package的方法
Jan 16 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
详解Django配置JWT认证方式
May 09 Python
初学者学习Python好还是Java好
May 26 Python
python2和python3哪个使用率高
Jun 23 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
python如何查找列表中元素的位置
May 30 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利用COM对象访问SQLServer、Access
2006/10/09 PHP
php简单封装了一些常用JS操作
2007/02/25 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
python删除字符串中指定字符的方法
2018/08/13 Python
python中wheel的用法整理
2020/06/15 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
信息管理专业推荐信
2013/10/29 职场文书
餐饮加盟计划书
2014/01/10 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
诚信考试标语
2014/06/24 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
初中数学教学反思范文
2016/02/17 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技