python的argpare和click模块详解
一、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)
这里还可以加一个choices的选项,限制参数为指定的参数
parseobj.add_argument("--type", action='store', dest='t', required=True,
help="type", type=str,choices=["update","create"])
这里我们在试一下nargs参数,切记这里的type也是str,不能是list,这里的type的意思是每个参数的类型
parseobj.add_argument("--index", action='store', dest='index', required=True,
help="index names", type=str,nargs="+")

4、最后我们测试一下这个模块
a、测试 -h选项,这里-h和--help的效果是一样的

b、测试--V选项和--version选项

c、测试一下输入的正确的参数

二、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()

其他的应该大家都可以看懂,这个prompt的作用是什么呢,实际就是如果我们没有为name传参数,他就会给出一个提示

下面这个例子是完整的传参

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()
测试结果

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()
测试结果

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标准库中socket模块详解
python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...
- 转载的:Python os 和 os.path模块详解
os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdi ...
- Python之import方法引入模块详解
在python用import或者from-import或者from-import-as-来导入相应的模块,作用和使用方法与C语言的include头文件类似.其实就是引入某些成熟的函数库和成熟的方法,避 ...
- python与正则表达式:re模块详解
re模块是python中处理正在表达式的一个模块 正则表达式知识储备:http://www.cnblogs.com/huamingao/p/6031411.html 1. match(pattern, ...
- python os.stat() 和 stat模块详解
stat 系统调用时用来返回相关文件的系统状态信息的. 首先我们看一下stat中有哪些属性: >>> import os >>> print os.stat(&qu ...
- Python基础系列讲解——时间模块详解大全之time模块
Python中提供处理时间日期相关的内置模块有time.datetime和calendar. time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以tim ...
- Python运维自动化psutil 模块详解(超级详细)
psutil 模块 参考官方文档:https://pypi.org/project/psutil/ 一.psutil简介 psutil是一个开源且跨平台(http://code.google.com/ ...
- python标准库中socket模块详解
包含原理就是tcp的三次握手 http://www.lybbn.cn/data/datas.php?yw=71 这篇讲到了socket和django的联系 https://www.cnblogs.co ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
随机推荐
- CentOS初次安装基本配置
在虚拟机中安装CentOS7碰到的问题以及解决方法 1.安装之后想通过CRT远程连接获,输入ifconfig查看系统ip报错误:ifconfig command not found,报此错误是由于初次 ...
- qnx gpio
in order to set gpio in qnx, you can use msmgpiotool # msmgpiotool gpiotool usage: gpiotool <comm ...
- CentOS7的内核优化
修改内核配置文件 vim /etc/sysctl.conf 刷新配置文件 sysctl -p 关ipv6 net.ipv6.conf.all.disable_ipv6 = net.ipv6.conf. ...
- 事务回滚 SET XACT_ABORT ON
USE tempdb IF OBJECT_ID ('dbo.test') IS NOT NULL DROP TABLE dbo.test GO CREATE TABLE dbo.test ( id I ...
- C语言编程漫谈——main函数
写在前面 促使我写这篇文章是因为我这几天找了几个一样是大三的同学,与我相同专业相同方向(物联网)的人,除了@小胡同的诗,基本没有什么其他人会现在看起来很简单的编程题目了.问了一下其他同学,他们大部分都 ...
- Windows下MongoDB的安装
1.安装Window2008 R2 并安装 SP1(我安装的是英文版,之前有安装中文版出错) 2.安装vc——redist_x64.exe(不然mongo运行不起来),没安装Sp1前,安装此部会出错. ...
- Vue 表格里的下拉列表
下拉列表column-select.vue组件内容: <template> <div class="column-select-wrapper"> < ...
- 微信公众号openid处理的一些笔记
每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同.如果公司有多个公众号,可以通过开放平台关联,这样同一用户,对同一个微信开放平台下的不同应用,unionid是相同 ...
- Linux命令、脚本
1.传文件 FTP/SFTP:ftp 用户名@远程ip SCP:注意ip后有个 : 本地文件发到远程 scp 本地文件 用户名@远程ip:远程路径 远程文件发到本地 scp 用户名@远程ip: ...
- 转载:HTTPS证书的产生过程详解
1.RSA身份验证的隐患 身份验证和密钥协商是TLS的基础功能,要求的前提是合法的服务器掌握着对应的私钥.但RSA算法无法确保服务器身份的合法性,因为公钥并不包含服务器的信息,存在安全隐患: 客 ...