python optionparser模块入门教程
步骤:
1、OptionParser 构造参数 usage 用于在帮助信息中提示使用方法,version 则是版本信息。 
2、add_option() 用于构造 option 配置,包括多个参数名称、构造方式(action)、类型(type)、主键名称(dest)、默认值(default)等。 
3、如果参数值(option argument)为多个,则需要指定 nargs。 
4、parse_args() 默认处理 sys.argv[1:],也可以提供其他参数值 "parse_args(args=[...])" 。 
5、直接用 opts.<dest> 属性访问 option argument。
例子: 
 
上面的%prog(自动解析为文件名),optparse 会以当前程序名的字符串来替代。
如果用户没有提供自定义的使用方法信息,optparse 会默认使用:
“usage: %prog [options]”。 
descr = '''This program prints lines from ESP cluster query logs. Command line options control which ESP cluster is used and which query log lines are printed.''' 
parser = OptionParser(可选参数(usage = usage_msg,description = descr, add_help_option=True)) 
parser.add_option("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE") 
parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="don't print status messages to stdout") 
#指导optparse解析程序的命令行,返回两个值options和args。options,它是一个对象(optpars.Values),保存有命令行参数值。
#只要知道命令行参数名,如 file,即可以访问其对应的值: options.file。args,它是一个由 positional arguments 组成的列表。 
(options, args) = parser.parse_args()        
optparse模块OptionParser用法
optparse是专门用来在命令行添加选项的一个模块。
例子:
 
from optparse import OptionParser
MSG_USAGE = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]" 
optParser = OptionParser(MSG_USAGE)
optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName") 
ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg', 
                     help="make lots of noise [default]")
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] 
options, args = optParser.parse_args(fakeArgs) 
print options.fileName 
print options.verbose 
print options 
print args 
print optParser.print_help()
输入结果:
 
file.txt 
False 
{'verbose': False, 'fileName': 'file.txt'} 
['this is some what', 'arg2', 'arge'] 
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
Options: 
  -h, --help            show this help message and exit 
  -f FILENAME, --file=FILENAME 
  -v, --vison           make lots of noise [default]
基本使用步骤 
1、 产生一个OptionParser的物件optParse。传入的值MSG_USAGE可被调用打印命令时显示出来。 
 
2、 调用OptionParser.add_option()添加选项 
 
add_option()参数说明: 
   action:存储方式,分为三种store、store_false、store_true 
   type:类型(我也不知道什么的类型) 
   dest:存储的变量 
   default:默认值 
   help:帮助信息
3、 调用OptionParser.parse_args()剖析并返回一个directory和一个list。 
 
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] 
options, args = optParser.parse_args(fakeArgs)
print options.fileName 
print options.verbose 
print options 
print args
输出结果:
 
parse_args()说明: 
如果没有传入参加,parse_args会默认将sys.argv[1:]的值作为默认参数。这里将fakeArgs模拟输入的值。
从返回结果中可以看到, 
options为是一个directory,它的内容fakeArgs为“参数/值 ”的键值对。 
args 是一个list,它的内容是fakeargs除去options后,剩余的输入内容。 
options.version和options.fileName都取到与options中的directory的值。
4、 调用OptionParser.optParser.print_help()输出帮助信息 
 
显示返回结果 
 
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
Options: 
  -h, --help            show this help message and exit 
  -f FILENAME, --file=FILENAME 
  -v, --vison           make lots of noise [default]
optParser.print_help()说明:
1、最开始的的MSG_USAGE的值:在这个地方显示出来了。 
2、自动添加了-h这个参数。 
注:在MSG_USAGE中如果使用%prog,会被自动解析为sys.args[0] 也就是文件名。如将,MSG_USAGE = "%prog [options] arg1 arg2",假如文件名为   filexx,那么出现在help中的
信息就是" filexx[options] arg1 arg2"。
深入分析 
OptionParser.add_option()
例:
参数action: 
存储方式,分为三种store、store_false、store_true。
下面分别对三种方式进行说明: 
第一种:action = "store"
1、如果输入的参数fakeArgs中存在"-v",则verbose返回的值为fakeArgs中的紧跟'-v'的数,即"good luck to you"。这也正好options中的键值对应,剩下配对的参数都传给了args。
 
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") 
optParser.add_option("-v","--vison", action="store", dest="verbose")
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] 
options, args = optParser.parse_args(fakeArgs) 
print optParse.verbose 
print options 
print args
输入结果:
 
2、如果输入的参数fakeArgs中不存在"-v",则verbose的返回值为None。 
代码: 
 
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") 
optParser.add_option("-v","--vison", action="store", dest="verbose")
fakeArgs = ['-f','file.txt','good luck to you', 'arg2', 'arge'] 
options, args = optParser.parse_args(fakeArgs) 
print optParse.verbose 
print options 
print args
输出结果: 
 
第二种:action = "store_true" 
1、fakeArgs中存在'-v',verbose将会返回True而不是"good luck to you"。意思就是说verbose的值与'-v'的后一位无关,只与'-v'存不存在就关。
代码:
 
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") 
optParser.add_option("-v","--vison", action="store_true", dest="verbose")
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] 
options, args = optParser.parse_args(fakeArgs) 
print optParse.verbose 
print options 
print args
输出结果:
 
2、fakeArgs中不存在'-v',verbose同样返回空(我就不运行代码了)。
第三种:action="store_false" 
这与action="store_true"类似,只有其中有参数'-v'存在,则verbose的值为False,如果'-v'不存在,那么verbose的值为None。
参数:default 
optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg')
设置些参数是用于返回verbose的返回值。 
如果action="store",default='gggggg',代码如下。 
 
如果fakeArgs中存在'-v',则返回值为,"good luck to you" 
如果不存在'-v'则返回值为,"gggggg"
如果action ="store_true",default='gggggg',代码如下。 
 
如果fakeArgs中存在'-v',则返回值为True。 
如果fakeArgs中不存在'-v',则返回值为None 
再一次说明了,如果action="store_true"时,verbose的值只与是否'-v'有关。是否也说明了action_true的优先级高于default。 
注:action="store_false"的功能与此类似,返回为False或者None。再一次证明了
参数:help 
 
主要用于显示帮助信息,使用optParser.print_help()将帮助栏显示出来。
在action="restore"时对比没使用help参数的'-f'与使用了help参数的'-v',多了一行帮助信息。
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
Options: 
  -h, --help            show this help message and exit 
  -f FILENAME, --file=FILENAME 
  -v VERBOSE, --vison=VERBOSE 
make lots of noise [default]
在action="restore_false"时。 
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") 
optParser.add_option("-v","--vison", action="store", dest="verbose",default='gggggg', 
  help="make lots of noise [default]")
两个对比的输出结果:
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
Options: 
  -h, --help            show this help message and exit 
  -f FILENAME, --file=FILENAME 
  -v, --vison           make lots of noise [default]
参数:type 
如果type="string"时,将无法使用action="store_false"和action="store_true"。不知是否可以将type理解成verbose的返回值类型。 
关于输入的的参数fakeArgs的说明 
还是用之前的代码分析 
 
from optparse import OptionParser 
MSG_USAGE = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]" 
optParser = OptionParser(MSG_USAGE) 
optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName") 
optParser.add_option("-v","--vison", action="store", dest="verbose",default='gggggg', 
                    help="make lots of noise [default]")
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] 
options, args = optParser.parse_args(fakeArgs)
print options 
print args 
 
fakeArgs中的值对于各选项'-v','-f'来说都是前后两个值配对的。
1、正常情况: 
结果 
则options的值为:{'verbose':'good luck to you', 'fileName': 'file.txt'} 
args的值为: ['arg2', 'arge']
2、不正常情况: 
如果连续出现两个选项'-f','-v'。 
fakeArgs = ['-f','-v','good luck to you', 'arg2', 'arge'] 
'-v'作为值传给了fileName。 
但verbose返回的是默认值'gggggg',如果没设置将会返回None。换句说话,就是没检测到参数'-v'的存在,这也再一次说明了,fakeArgs中键值配对的观念。前一个数作为选项,后一个作为值。
结果: 
则options的值为:
{'verbose':'gggggg', 'fileName': '-v'}
args的值为:
['good luck to you','arg2', 'arge']
3、如果多出一个'x'未被定义则程序会报错。 
fakeArgs = ['-x','-f','file.txt','-v','good luck to you', 'arg2', 'arge']