详解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 with statement 进行文件操作指南
Aug 22 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
python仿抖音表白神器
Apr 08 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
Python3 使用selenium插件爬取苏宁商家联系电话
Dec 23 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
python里反向传播算法详解
Nov 22 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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_init函数用法
2014/01/31 PHP
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
JavaScript简介
2015/02/15 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python 中的lambda函数介绍
2018/10/10 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
C#面试题问题集
2016/04/02 面试题
科技工作者先进事迹
2014/08/16 职场文书
三严三实对照检查材料
2014/08/25 职场文书
党员对照检查材料
2014/09/22 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
2014年妇女工作总结
2014/12/06 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
建党伟业电影观后感
2015/06/01 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python