详解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 11 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
Python实现常见的回文字符串算法
Nov 14 Python
python中logging模块的一些简单用法的使用
Feb 22 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
python获取地震信息 微信实时推送
Jun 18 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
为什么称python为胶水语言
Jun 16 Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 Python
python实现自动打卡的示例代码
Oct 10 Python
python math模块的基本使用教程
Jan 16 Python
python基于turtle绘制几何图形
Jun 15 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
深入理解PHP之OpCode原理详解
2016/06/01 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
在Python中使用正则表达式的方法
2015/08/13 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python format 格式化输出方法
2018/07/16 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
python从PDF中提取数据的示例
2020/10/30 Python
大学生实习期自我评价范文
2013/10/03 职场文书
个人汇报材料范文
2014/12/30 职场文书
公司文体活动总结
2015/05/07 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS