浅谈optparse 解析命令行参数库

 使用的背景

 

在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数

在python中我们可以通过sys 模板的argv 但是这模板功能远没有今天我们介绍的optparse模块强大。


介绍下最基本的用法:

  • 使用optionparser模块来解析
  • optionparser的执行过程:
  • 导入optionparser : from optparse import OptionParser构造optionparser的对象:parser = OptionParser()

 

  • 往optionparser对象中增加option :parser.add_option()

 

  • 调用optionparser的解析函数:(options, args) = parser.parse_args()在options中使用解析到的options,在args中使用其他的args。

 


下面我们写个用例脚本进行简单的说明:

  1. 首先我们要导入模块    from  optparse import  OptionParser
  2.   创建一个  用户help说明的文档参数 (这个是可选的)
    usage="myprog [-f<filename>][-s<xyz>]arg1[,arg2..]"
  3.   创建一个实例对象 optParser=OptionParser(usage)

 

      4.   在对象中增加参数选项   optParser.add_option("-f","--file",action="store",type="string",dest="filename",help='-f参数说明信息 ')
                                          optParser.add_option("-v","--version",action="store_false",dest="verbose",default="None",help="-v参数说明信息",)

 

     5.调用optionparser的解析函数 让用户输入的命令保存在optParser.parse_args(y) y中  options,args=optParser.parse_args()

 


 

整体的脚本

 


from  optparse import  OptionParser
usage="myprog [-f<filename>][-s<xyz>]arg1[,arg2..]"
optParser=OptionParser(usage)
optParser.add_option("-f","--file",action="store",type="string",dest="filename")
optParser.add_option("-v","--vison",action="store_false",dest="verbose",default="none",help="make losts of noise [default]")
fakeArgs=['-f',"file.txt",'-v','good luck to you','arg2','arg']
options,args=optParser.parse_args(fakeArgs)

print options.filename
print args
print options.verbose

 


运行结果:

分析  因为我们传入了参数-f文件名为 file.txt.当我们条用options.filenmae  时就显示我们的传入的文件名为file.txt

       我们传入的参数没有被脚本调用被传入了ARGS 列表中

      因为我们第一action 为 store_false 所以不管-v传入什么参数。verbose的值都没false(store_ture 相反)

 


 


 

 实例:

 1 from optparse import OptionParser
 2 optParser = OptionParser()
 3 optParser.add_option("-n","--number",action = "store",type="int",dest = "intNumber")
 4 optParser.add_option("-v","--version", action="store_false", dest="verbose",default='gggggggg',help="no help")
 5 options, args = optParser.parse_args()
 6 if options.intNumber is not None:
 7     #num = options.intNumber
 8     print options.intNumber,options.verbose
 9 
10 else:
11     for i in range(1,5):
12         #num = i
13         print i

 

 结果

注意一点当你设置action_false 如果没有传入参数测不生效。如看上面第一次执行

 

posted @ 2016-12-08 12:44  下丶雨天  阅读(5999)  评论(0编辑  收藏  举报