详解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存取XML的常见方法实例分析
Mar 21 Python
Python简单删除列表中相同元素的方法示例
Jun 12 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
Python Socket使用实例
Dec 18 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
python实现Windows电脑定时关机
Jun 20 Python
Python 实现交换矩阵的行示例
Jun 26 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
python 画图 图例自由定义方式
Apr 17 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
Python并发爬虫常用实现方法解析
Nov 19 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 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
跟老齐学Python之复习if语句
2014/10/02 Python
python简单分割文件的方法
2015/07/30 Python
深入理解Python对Json的解析
2017/02/14 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Django CBV类的用法详解
2019/07/26 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
Linux常见面试题
2016/10/04 面试题
幼儿园教师辞职信
2014/01/18 职场文书
家长评语和期望
2014/02/10 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
伦敦奥运会口号
2014/06/13 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
监护人证明
2015/06/19 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
python利用while求100内的整数和方式
2021/11/07 Python