python 模块学习 — optparse

python有两个内建的模块处理命令行参数(getopt & optparse) 之前我一直用getopt 今天无意中看到optparse模块 操作简单 也比较容易理解

简单的例子:

# test.py#!/usr/bin/env pythonfrom optparse import OptionParserparser = OptionParser()parser.add_option('-f', '--file', type='string', action='store', dest='listfile', default='')parser.add_option('-c', '--cmd', type='string', action='store', dest='cmdline', default='ifconfig')parser.add_option('-s', '--script', type='string', action='store', dest='script', default='')(options,args) = parser.parse_args()listfile = options.listfilecommand = options.cmdlinescriptfile = options.script ## -f  iplist.txtfor i in open(listfile).readlines():    print i

输出结果:

python test.python -f iplist.txt..................

流程:

首先,必须 import OptionParser 类,创建一个 OptionParser 对象:

from optparse import OptionParser .....parser = OptionParser()

然后,使用 add_option 来定义命令行参数:

parser.add_option('-f','--file'.....)

定义好了所有的命令行参数,调用 parse_args() 来解析程序的命令行:

(options,args) = parser.parse_args()

注: 你也可以传递一个命令行参数列表到 parse_args();否则,默认使用 sys.argv[1:]。parse_args() 返回的两个值:options,它是一个对象(optpars.Values),保存有命令行参数值。只要知道命令行参数名,如 file,就可以访问其对应的值: options.file 。args,它是一个由 positional arguments 组成的列表。

选项值:

设置默认值:

from optparse import OptionParserparser = OptionParser()parser.add_option('-f', default='file list')options,args = parser.parse_args()print options.f # 默认值要与期望的选项类型所匹配,因为默认值不会完成任何转换>>> python test.py  -f 'file list'file list

类型转换:optparse 可以把选项值从字符串转换成 整数,浮点数,长整数,等要启用转换 需要制定add_option()的参数 — type

#!/usr/bin/env pythonfrom optparse import OptionParserparser = OptionParser()parser.add_option('-f', action='store', type='int')parser.add_option('-p', action='store', type='float')parser.add_option('-t', action='store', type='long')options,args = parser.parse_args()print 'int,   %-10s %s' % (type(options.f),options.f)print 'float, %-10s %s' % (type(options.p),options.p)print 'long,  %-10s %s' % (type(options.t),options.t)# 如何一个选项的值不能转换成指定的类型,会打印一个错误,程序将退出>>> python parse.py  -f 1 -p 2 -t 3int,   <type 'int'> 1float, <type 'float'> 2.0long,  <type 'long'> 3

选项动作:

action 是 parse_args() 方法的参数之一,它指示 optparse 当解析到一个命令行参数时该如何处理。actions 有一组固定的值可供选择,默认是’store’,表示将命令行参数值保存在 options 对象里。

parser = OptionParser()parser.add_option('-f', action='store', type='int')options,args = parser.parse_args()print options.f

布尔标志:store_true 和 store_false ,用于处理带命令行参数后面不 带值的情况。如 -v,-q 等命令行参数:

parser = OptionParser()parser.add_option('-f', action='store_true', default=False, dest='test')parser.add_option('-p', action='store_false', default=False, dest='test')options,args = parser.parse_args()print options.test

处理重复选项:处理重复选项有三个方法 覆盖 追加 统计 默认做法是覆盖所有现在的值store就是采用这种动作

append动作:可以在选项重复时累计值,创建一个值的列表 允许多个相应时,追加模式会很有用 因为各个相应可以单独列出

from optparse import OptionParserparser = OptionParser()parser.add_option('-f', action='append', dest='appendfile', default=[])options,args = parser.parse_args()print options.appendfile# 执行结果>>> python parse.py []>>> python parse.py -f 1.txt['1.txt']>>> python parse.py -f 1.txt -f 2.txt['1.txt','2.txt']

count动作:知道一个选项指定了多少次就足够了,而不需要相关的值 例如,很多应用允许用户重复-v 选项,来提高其输出的详细等级

from optparse import OptionParserparser = OptionParser()parser.add_option('-f', action='count', dest='count', default=0)options,args = parser.parse_args()print options.count# 执行结果>>> python parse.py -f1>>> python parse.py -f -f2>>> python parse.py -f -f -f3

action值还有以下这些:store_const(常量) 、callback(回调)

还有很多参数动作,我就不一一举例子 可以参考python标准库

python 模块学习 — optparse

相关文章:

你感兴趣的文章:

标签云: