详解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之再深点,更懂list
Sep 20 Python
Python实现股市信息下载的方法
Jun 15 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
超全Python图像处理讲解(多模块实现)
Apr 13 Python
Python爬虫:Request Payload和Form Data的简单区别说明
Apr 30 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
django使用graphql的实例
Sep 02 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
基于mysql的论坛(6)
2006/10/09 PHP
PHP生成UTF8文件的方法
2010/05/15 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
简单学习Python多进程Multiprocessing
2017/08/29 Python
python决策树之C4.5算法详解
2017/12/20 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
云台山导游词
2015/02/03 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技