2022年 11月 4日

Python中optparser库用法实例详解

目录

简介

引入

初始化

带有Usage选项: 

不带Usage选项: 

添加选项

核心

非核心

完整的demo

总结


原文地址:https://www.jb51.net/article/133785.htm 

本文研究的主要是Python中optparser库的相关内容,具体如下。

一直以来对optparser不是特别的理解,今天就狠下心,静下心研究了一下这个库。当然了,不敢说理解的很到位,但是足以应付正常的使用了。废话不多说,开始今天的分享吧。

简介

optparse模块主要用来为脚本传递命令参数功能。

引入

在IDE中引入optparser是很方便的。

from optparse import OptionParser

初始化

相对而言,初始化需要我们多注意一点点了。 因为我们有两种不同的方式来初始化一个parser。

带有Usage选项: 

这样的好处是可以模拟带有帮助的终端使用,如下

  1. >>> from optparse import OptionParser
  2. >>> usage = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"
  3. >>> parser=OptionParser(usage) #这里为类添加了参数usage

 显示的时候就会使这样的了。

  1. >>> parser.print_help()
  2. Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
  3. Options:
  4.  -h, --help      show this help message and exit #此两行根据option自动生成,比较智能额~~
  5.  -f FILENAME, --file=FILENAME
  6.             no any help #自定义帮助信息

不带Usage选项: 

正常来说可以不用设置参数。

parser = OptionParser()

添加选项

为命令行添加选项是我们这次最主要的工作了,也是核心。但是在添加选项之前,我们应该明白,为什么要添加选项?选项的工作原理是什么?这样我们才能更好的理解optparser的设计思想。

选项:类比于Unix的工作模式,举例 ls -a 或者 ls -all 。

我们添加了一个名为all 的选项,为了简化操作,默认设置为 a 。在OptionParser中要想实现这样的一个效果,我们只需要借助如下的一行代码。

  1. # 这只是示意而已,没有什么意义
  2. parser.add_option('-a' , '--all' )

核心

作为核心就是指add_option的其他的参数。有如下几个:

  • action: 验证输入数据类型是否和type 匹配,并将符合要求的这个参数存储到dest变量中。有以下几个属性:
  1. store 默认值 
  2. store_false 标记而已 配合下边的那个store_true来进行代码的“标记”,辅助流程控制。
  3. store_true 标记而已
  • type : 指的是对应于参数,如-f,-n等的接下来的那个参数的数据类型,有string,int,float等等
  • dest : 用于保存临时变量,其值可以作为options的属性进行访问。存储的内容就是如-f,-n 等紧挨着的那个参数内容。
  • help: 提供用户友好的帮助信息,一般可以用来解释本add_option方法的功能阐述。

单纯的讲起来很枯燥,下面看一个小例子就会明白了。

  1. >>> parser.add_option("-f", "--file",action="store", type="string", dest="filename")
  2. <Option at 0x2d72f48: -f/--file>
  3. >>> args = ["-f", "foo.txt"] #这个是模拟命令行的输入
  4. >>> (options, args) = parser.parse_args(args)
  5. >>> options.filename
  6. 'foo.txt'

 对于action属性可以看看接下来的这段代码。

  1. >>> from optparse import OptionParser
  2. >>> parser=OptionParser()
  3. >>> parser.add_option("-v", action="store_true", dest="verbose")
  4. <Option at 0x2ceb888: -v>
  5. >>> parser.add_option("-q", action="store_false", dest="verbose")
  6. <Option at 0x2d68e48: -q>
  7. >>> fakeArgs = ['-v','hello']
  8. >>> options, args = parser.parse_args(fakeArgs)
  9. >>> options.verbose
  10. True
  11. >>> fakeArgs = ['-q','bye bye']
  12. >>> options, args = parser.parse_args(fakeArgs)
  13. >>> options.verbose
  14. False
  15. #如果同时写两个选项v和q,它会以哪个为准呢,答案是以最后出现的为准
  16. >>> fakeArgs = ['-q','bye bye','-v','hello']
  17. >>> options, args = parser.parse_args(fakeArgs)
  18. >>> options .verbose
  19. True

非核心

这里主要是讲解一下关于default参数的作用,其实就是给dest的默认值。

如果我们没有指定dest的值的话,default的值就会作为dest的默认值来进行使用!

  1. >>> parser.add_option("-x", action="store", dest="verbose", default="defaultvalue")
  2. <Option at 0x2d77148: -x>
  3. >>> options, args = parser.parse_args() #这里没有传参数
  4. >>> options.verbose
  5. 'defaultvalue'

完整的demo

  1. from optparse import OptionParser
  2. usage = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"
  3. optParser = OptionParser(usage)
  4. optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName")
  5. ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default='None',
  6.            help="make lots of noise [default]")
  7. fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge']
  8. options, args = optParser.parse_args(fakeArgs)
  9. print options.fileName
  10. print options.verbose
  11. print options
  12. print args
  13. print optParser.print_help()

运行结果如下:

  1. file.txt
  2. False
  3. {'verbose': False, 'fileName': 'file.txt'}
  4. ['this is some what', 'arg2', 'arge']
  5. Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
  6. Options:
  7. -h, --help show this help message and exit
  8. -f FILENAME, --file=FILENAME
  9. -v, --vison make lots of noise [default]

总结

以上就是本文关于Python中optparser库用法详解的全部内容,希望对大家有所帮助。