初学python,今天在偶然间了解到python中有个解析模块argparse,其实此解析模块和linuxC下的getopt()的功能大同小异,写此篇博文的目的只是为了做个笔记~
熟悉linux系统命令的人都知道,每个命令后面都可以跟许多参数来实现不同的功能,拿最简单的ls来举例吧
当我们输入ls是终端就会展示出当前目录下的所有文件名
当我们输入ls filename,此时ls后面加了对应的文件名于是终端就会输出该目录对应下面的所有文件
当我们输入ls -l时,则此时终端会展示当前目录下各个文件的详细信息
通过上面对ls加参的几种用法的简单介绍,我想大家因该对命令行参数的作用有所认识了吧,接下来我就会开始介绍我们可以在python中如何利用argparse模块来帮助我们解析命令行参数
argparse模块的使用
argparse的用法初体验
(1)假设我们想让用户在运行程序时必须加上一个命令行参数
#! /usr/bin/python
#导入解析模块的包
import argparse
parser = argparse.ArgumentParser()
#增加一个命令行参数对应的参数名为echo,-h之后对其的解释文help对应的字符串
parser.add_argument('echo',help = 'Show the string you use here')
args = parser.parse_args()
//打印获取的参数
print args.echo
首先我们不加参数来运行程序试试
可以看出错误提示为参数太少~
接着我们加-h(此为解析模块默认支持的参数)试试
从帮助信息中我们可以得知,此程序我们必须要加一个参数,其对应名为echo,而且后面有提示该参数的作用为展示对应命令参数在程序中
于是我们随便加个命令字符试试
结果如下
可以看出和我们上述讲的一样程序中输出了对应的命令行参数
(2)指定命令行参数的类型
假如我们想指定输入类型该咋么做(默认为字符串类型)
实例指定类型为整形
#! /usr/bin/python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('value',help = 'show 2 * value',type = int)
args = parser.parse_args()
print args.value *2
若我们命令行参数输入为4
(3)添加可变参数
上述例子中我们仅仅是展示了定参(运行程序时必须有)的用法,那么我们如何添加可选参数呢?
先看一个例子
#! /usr/bin/python
import argparse
parser = argparse.ArgumentParser()
#添加可选参数
parser.add_argument('-verbosity',help = 'increase output verbosity')
args = parser.parse_args()
if args.verbosity:
print "verbosity turned on"
如上所示要设置一个可选参数,我们只需在添加参数时在参数名前加’-‘或’–’都行
测试如下
上述实例中我们必须当加了-verbosity时后面就必须给出个参数,有时这个参数是多余的,例如当只需判断可选参数加或未加就足够时,此时我们刚才的程序可以这样做
#! /usr/bin/python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-verbosity',help = 'increase output verbosity',action = 'store_true')
args = parser.parse_args()
if args.verbosity:
print "verbosity turned on"
运行结果如下
上述代码通过关键此action指定为store_ture时就可以达到只选参后面不许在跟参数
总结:
关于argparse就先总结这么多,如果大家想用此模块实现更高级的功能http://blog.ixxoo.me/argparse.html