详解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中的Descriptor描述符学习教程
Jun 02 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Flask框架各种常见装饰器示例
Jul 17 Python
Python中正则表达式的用法总结
Feb 22 Python
深入了解Django中间件及其方法
Jul 26 Python
Django models.py应用实现过程详解
Jul 29 Python
使用python实现CGI环境搭建过程解析
Apr 28 Python
python的json包位置及用法总结
Jun 21 Python
python中的split、rsplit、splitlines用法说明
Oct 23 Python
总结Python使用过程中的bug
Jun 18 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 缓存函数代码
2008/08/27 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
SVG描边动画
2017/02/23 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
Python列表切片操作实例总结
2019/02/19 Python
Python判断有效的数独算法示例
2019/02/23 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
python爬虫添加请求头代码实例
2019/12/28 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
护士个人简历自荐信
2013/10/18 职场文书
投标承诺书范本
2014/03/27 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
医院信息公开实施方案
2014/05/09 职场文书
2015年话务员工作总结
2015/04/29 职场文书
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技