• 浅谈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 如果没有传入参数测不生效。如看上面第一次执行

  • 相关阅读:
    Charpter5 软件测试总结
    Charpter3 关于闰年测试
    Charpter2 新的测试用例
    Charpter1 等价类划分方法分析与应用
    软件测试第一周学习总结
    关于软件测试学习的心得
    软件测试-同行评审
    白盒测试
    黑盒测试
    Java实现的闰年测试程序
  • 原文地址:https://www.cnblogs.com/yubenliu/p/6144492.html
Copyright © 2020-2023  润新知