python的argpare和click模块详解
python的argpare和click模块详解
一、argparse模块
1、模块说明
1
2
argparse是python的标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块,argparse能够根据程序中的定义的sys.argv中解析出这些参数,
并自动生成帮助和使用信息
2、模块常用的参数
1
2
3
4
5
6
7
8
9
10
参数说明:
name/flag:参数的名字
action:遇到参数的动作,默认值是store
nargs:参数的个数,可以是具体的数字,或者是+或者是,表示0个或者多个参数,+号表示1个或者多个参数
default:不指定参数时的默认值
type:# 参数的类型
choice:参数允许的值
required:可选参数是否可以省略
help:参数的帮助信息
dest:解析后参数的名称
3、使用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)
4、最后我们测试一下这个模块
a、测试 -h选项,这里-h和--help的效果是一样的
b、测试--V选项和--version选项
c、测试一下输入的正确的参数
二、click模块
1、模块介绍
1
2
click模块的作者就是Flask的作者,(Armin Ronacher)开发的一个第三方的模块,用于快速创建命令行。他的作用用python标准库中的argparse相同,但是
使用更加简单,click相对于标准库的argparse,就好比requests库相当于标准库的urllib库,click是一个第三的库,因此在使用之前需要安装
2、模块安装
1
E:python3Scripts>pip3.6.exe install click
3、使用步骤
a、使用@click.command()装饰一个函数,使之成为命令行的接口
b、使用@click.option()等装饰函数,为其添加命令行选项等
c、先看一个官方的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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、常用参数
1
2
3
4
5
6
常用参数
default:设置命令行参数的默认值
help:参数说明
type:参数的类型,可以是string,int,float
prompt:当在命令行中没有输入相应的参数,会根据prompt提示用户输入
nargs:指定命令行参数接受的值的个数
a、测试一下nargs参数
1
2
3
4
5
6
7
8
@click.command()
@click.option('--post',nargs=2,help='Number of post')
def hello(post):
print(post)
if name == '__main__':
hello()
测试结果
b、测试click.choice选项
1
2
3
4
5
6
7
8
@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可以为我们解决这个问题
1
2
3
4
5
6
7
8
@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()
1
2
3
prompt:要设置为True
hide_input:要设置为True
confirmation_prompt:会自动为我们进行密码的二次验证
测试结果如下
错误的输入
正确的输入
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
python中is、id、==与浅拷贝和深拷贝
python中的3个常见操作符is、id、==,三个的使用方法和应用场景不近相同,有各自适合的应用场景 is:用于比较两个对应是否是同一个引用==:用于比较两个之是否相同id:用于获取对象的内存地址 id(5) 1492768624 a = 4 b = 4 a == b True a is b True a = 257 b = 257 a == b True a is b False 两个人数值对象都是4的时候他们的值相等,他们的引用也相同,但是当两个对象值为257的时候,他们的引用就不相同了,为什么出现这种原因? 这是因为python的内存管理机制,对于数值而言,在[-5,257)之间的数值对象他们共用一个对象,即都指向一个内存地址。 a = 4 b = 4id(a) 1492768608id(b) 1492768608 可见在内存中的地
- 下一篇
大数据学习:带你从多个维度来分析大数据发展趋势
如今“大数据”已不再是单纯描述数据特征的词汇,而是一个多学科交融的热点研究领域,其背后有着复杂和深刻的新理念。 今天我们带大家从“技术、工程、科学和应用”这四个维度分析大数据的研究现状与挑战,探讨未来研究的侧重点和发展趋势,如图3所示。 1、纵向维度。 “大数据技术”是大数据实践活动中应用的技术方案和工具等,基于信息流程视角,其相关技术涵盖数据采集、存储、传输、清洗、检索、处理和展示等多方面。大数据学习扣qun:74零零【41三8yi】虽然云计算、NoSQL、Hadoop等技术在大数据存储和处理的应用开启了新的纪元,但这些技术在算法优化、分析统计、语义处理、知识可视化呈现等方面还存在很多不足,这些问题在未来的研究中仍会成为关注的焦点。 2、横向维度。 “大数据应用”指大数据在实践中的具体应用,目前相关应用已在政治、经济、社会管理、军事活动和科学研究等领域开启了新的探索。目前数据源质量、个人隐私、数据公正公平等问题让人堪忧,微软首席研究员DanahBoyd教授对大数据提出了“冷思考”,号召大家客观理性对待大数据。未来大数据应用的涉及面将会更广泛,也更注重解决实际问题,如移动互联网平台的深...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程