`
诗意的栖居
  • 浏览: 273802 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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。
  简单举例:
  from optparse import OptionParser
  usage_msg = 'usage: %prog [options] arg'
  上面的%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可被调用打印命令时显示出来。

MSG_USAGE = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"

optParser = OptionParser(MSG_USAGE)


2、 调用OptionParser.add_option()添加选项

optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")

optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg',

                     help="make lots of noise [default]")


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




输出结果

file.txt

False

{'verbose': False, 'fileName': 'file.txt'}

['this is some what', 'arg2', 'arge']




parse_args()说明:

   如果没有传入参加,parse_args会默认将sys.argv[1:]的值作为默认参数。这里我们将   fakeArgs模拟输入的值。



从返回结果中可以看到,

l     options为是一个directory,它的内容fakeArgs为“参数/值 ”的键值对。

l     args 是一个list,它的内容是fakeargs除去options后,剩余的输入内容。

l     options.version和options.fileName都取到与options中的directory的值。



4、 调用OptionParser.optParser.print_help()输出帮助信息

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()

例:optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg',

                     help="make lots of noise [default]")



参数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




输入结果

good luck to you

{'verbose': 'good luck to you', 'fileName': 'file.txt'}

['arg2', 'arge']


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




输出结果



None

{'verbose': None, 'fileName': 'file.txt'}

['good luck to you', 'arg2', 'arge']



第二种: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




输出结果

True

{'verbose': True, 'fileName': 'file.txt'}

['good luck to you', 'arg2', 'arge']



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',代码如下。

optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg')

fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge']

如果fakeArgs中存在'-v',则返回值为,"good luck to you"

如果不存在'-v'则返回值为,"gggggg"



如果action ="store_true",default='gggggg',代码如下。

optParser.add_option("-v","--vison", action="store_true", dest="verbose",default='gggggg')



如果fakeArgs中存在'-v',则返回值为True。

如果fakeArgs中不存在'-v',则返回值为None

再一次说明了,如果action="store_true"时,verbose的值只与是否'-v'有关。是否也说明了action_true的优先级高于default。

注:action="store_false"的功能与此类似,返回为False或者None。再一次证明了



参数:help

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]")

主要用于显示帮助信息,使用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']
分享到:
评论

相关推荐

    Python中optionParser模块的使用方法实例教程

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值。分享给大家供大家参考之用。具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一...

    利用python-nmap模块探测所有主机445端口的开放状态.pptx

    使用 Python-Nmap 模块可以编写一个探测主机 445 端口的开放状态的函数,函数中使用 PortScanner()类的 scan() 函数来扫描主机的 445 端口,然后索引扫描结果并打印端口状态。 以下是一个探测主机 445 端口的开放...

    python使用psutil模块获取系统状态

    Python中的`psutil`模块是一个强大的工具,用于获取运行在操作系统上的进程信息和系统资源的利用率,如CPU、内存、磁盘、网络等。这个模块是跨平台的,支持多种操作系统,包括Linux、Windows、MacOS等。在本文中,...

    Python中optparse模块使用浅析

    使用此模块前,首先需要导入模块中的类OptionParser,然后创建它的一个实例(对象): 复制代码 代码如下: from optparse import OptionParser parser = OptionParser() #这里也可以定义类的参数,后续有 接着就...

    python命令行传参详解,optparse模块OptionParse类的学习.pdf

    Python中的`optparse`模块是用于处理命令行选项和参数的工具,它是Python标准库的一部分。这个模块使得在命令行接口(CLI)的程序中添加和解析参数变得简单且易于理解。下面我们将深入探讨`optparse`的工作原理以及...

    Python命令行参数解析模块optparse使用实例

    主要介绍了Python命令行参数解析模块optparse使用实例,本文讲解了增加选项(add_option())、行为(action)、设置默认值(default)、生成帮助提示(help)、设置boolean值、错误处理、选项组(Grouping Options)等内容,需要...

    Python语言总结 v1.0

    - **unicode**:在Python 2.x版本中用于处理Unicode字符串的模块,在Python 3.x版本中已经被集成到`str`模块中。 - **json**:用于处理JSON数据的模块,支持序列化和反序列化操作。 - **OptionParser**:这是一个...

    python optparse命令解析模块.docx

    在Python中,还有个较简单的`getopt`模块,但`optparse`因其强大的功能和易用性而更受欢迎。 `optparse`模块的核心在于`OptionParser`类,它允许开发者定义各种命令行选项,并自动处理`-h`或`--help`选项,生成帮助...

    python optparse模块使用实例

    Python的`optparse`模块是Python 2.x版本中用于处理命令行选项的工具,它提供了方便的方式来定义、解析和验证命令行参数。在Python 3.x中,`optparse`已被更强大的`argparse`模块所替代,但对仍在使用Python 2.x的...

    python 命令行参数

    首先,需要导入`optparse`模块中的`OptionParser`类,并实例化一个`OptionParser`对象: ```python from optparse import OptionParser parser = OptionParser() ``` ##### 添加命令行选项 接下来,使用`add_...

    python相似模块用例

    在Python编程中,多线程是一个重要的概念,用于提高程序的并发执行能力。本文将深入探讨两个常用的线程模块——`threading`和`Thread`,以及解析命令行选项的`getopt`和`optparse`模块。 首先,让我们来看看`...

    python远程开启关闭的计算机

    - 在脚本中更新Python 2.x到Python 3.x的语法差异,例如`print`函数的使用。 - 如果不在同一局域网内,还需提供IP地址等其他参数。 通过以上步骤和技术方案,可以有效地实现远程开关机的功能,提高工作效率并节约...

    GNU Radio_benchmarkTX codeWalkthrough

    6. **OptionParser 类的使用**:OptionParser 是 Python 的一个标准库模块,用于解析命令行选项和参数。在 GNU Radio 的脚本中使用它可以让用户在执行时输入参数,例如设置传输参数等。 7. **发送数据包函数**:这...

    Python处理命令行参数模块optpars用法实例分析

    在optparse模块中,有几个核心概念需要掌握,首先是add_option()方法,它用于在命令行参数中添加选项。选项的添加通常包括缩写选项和全拼选项,缩写选项通常由单个连字符引导,并且只能是单个字母,而全拼选项则由两...

    Python库 | scopt-0.0.3-py3-none-any.whl

    5. 配合argparse:虽然`scopt`是一个独立的库,但它可以与Python自带的`argparse`模块结合使用,提供更多的功能和灵活性。 在安装`scopt-0.0.3-py3-none-any.whl`这个包时,你可以使用Python的`pip`工具,命令通常...

    Python实现Linux中的du命令

    在提供的Python代码中,首先通过`optparse`模块处理命令行选项。`-s`选项用于统计指定对象的总大小,而`-a`选项则是用于根据大小自动显示合适的单位(如k, KB, MB, GB等)。通过`OptionParser`类定义这些选项,并...

    Python中optparser库用法实例详解

    本文研究的主要是Python中optparser库的相关内容,具体如下。 一直以来对optparser不是特别的理解,今天就狠下心,静下心研究了一下这个库。当然了,不敢说理解的很到位,但是足以应付正常的使用了。废话不多说,...

    python命令行参数用法实例分析

    在Python中,处理命令行参数的一种常见方法是使用`optparse`模块,这个模块提供了方便的方式来定义和解析命令行选项。下面将详细讨论`optparse`模块的使用及其相关技巧。 首先,`optparse`模块是Python标准库的一...

Global site tag (gtag.js) - Google Analytics