详解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实现的AES双向对称加密解密与用法分析
May 02 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
python 中字典嵌套列表的方法
Jul 03 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
python 字典的打印实现
Sep 26 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
Python制作一个仿QQ办公版的图形登录界面
Sep 22 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
十个Python自动化常用操作,即拿即用
May 10 Python
python异常中else的实例用法
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
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Element Input组件分析小结
2018/10/11 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
英国高街电视:High Street TV
2018/05/22 全球购物
帕克纽约:PARKER NY
2018/12/09 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
在职研究生自我鉴定
2013/10/16 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
聊聊JS ES6中的解构
2021/04/29 Javascript