详解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
Python实现的归并排序算法示例
Nov 21 Python
Django实现表单验证
Sep 08 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Python异常继承关系和自定义异常实现代码实例
Feb 20 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
python实现贪吃蛇双人大战
Apr 18 Python
pandas DataFrame运算的实现
Jun 14 Python
python 实现图片批量压缩的示例
Dec 18 Python
总结Python连接CS2000的详细步骤
Jun 23 Python
Python基本知识点总结
Apr 07 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
php类常量用法实例分析
2015/07/09 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
比利时买床:Beter Bed
2017/12/06 全球购物
2014年最新学习全国两会精神心得
2014/03/17 职场文书
教师产假请假条
2014/04/10 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
承诺函范文
2015/01/21 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
培训班通知
2015/04/25 职场文书
道歉的话语大全
2015/05/12 职场文书
2019同学聚会主持词
2019/05/06 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
python中tkinter复选框使用操作
2021/11/11 Python