详解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的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
python实现基本进制转换的方法
Jul 11 Python
python数据结构之链表的实例讲解
Jul 25 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
python requests指定出口ip的例子
Jul 25 Python
django重新生成数据库中的某张表方法
Aug 28 Python
python实现多线程端口扫描
Aug 31 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
python怎么调用自己的函数
Jul 01 Python
Python爬虫之爬取某文库文档数据
Apr 21 Python
Python实现抖音热搜定时爬取功能
Mar 16 Python
python和anaconda的区别
May 06 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
一个程序下载的管理程序(四)
2006/10/09 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
php简单的上传类分享
2016/05/15 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
jQuery MD5加密实现代码
2010/03/15 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
Python采集腾讯新闻实例
2014/07/10 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
详解python tkinter模块安装过程
2020/01/06 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
基于python 取余问题(%)详解
2020/06/03 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
清洁工表扬信
2014/01/08 职场文书
学校交通安全责任书
2014/08/25 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
六年级情感作文之500字
2019/10/23 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers