美文网首页
python学习笔记之--命令行参数处理二(optparse)

python学习笔记之--命令行参数处理二(optparse)

作者: itsenlin | 来源:发表于2022-02-19 17:43 被阅读0次

简介

optparse模块也是python内置的一种命令行参数处理模块,用法比getopt模块要简单,功能也更强大

不过此模块在python 3.2版本之后就弃用了,换成了argparse,这个在下一次再学习

这里还是从一个实例来学习

一个实例

代码

import optparse

usage = "usage: %prog [options] arg1 arg2"

parse = optparse.OptionParser(usage=usage, version="%prog v1.0")

parse.add_option("-o", "--output", dest="filename", help="write to file")
parse.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False,
                  help="print status messages to stdout")
parse.add_option("-n", type=int, dest="num", help="input a int number", metavar="NUMBER", default = 0)

opts, args = parse.parse_args()

print("opts = %s, args = %s" %(opts, args))

print("filename = %s, verbose = %s, num = %d" % (opts.filename, opts.verbose, opts.num))

这里添加的选项没有-h--help,但是可以直接使用,如下

itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -h
Usage: optparsetest.py [options] arg1 arg2

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -o FILENAME, --output=FILENAME
                        write to file
  -v, --verbose         print status messages to stdout
  -n NUMBER             input a int number
itsenlin@itsenlin-PC:~/Desktop/python_test$ 

模块的使用步骤

从上面实例源码中就可以看出,此模块使用的很简单,只需要三步

创建一个OptionParser对象

在一个程序打印使用帮助信息时,最常用的两个:

  • usage信息,用于打印一个程序的总体用法
  • version信息,用于打开一个程序的版本

这两个信息是在创建OptionParser对象时要提供的

optparse.OptionParser(usage=usage, version="%prog v1.0")

说明:这里的%prog打印的程序名,也可以使用os.path.basename(sys.argv[0])

其他更多的参数,参考官方文档:创建解析器

调用add_option()添加选项信息

函数原型如下:

OptionParser.add_option(option)
OptionParser.add_option(*opt_str, attr=value, ...)
  • opt_str包含长选项字符串,以及短选项字符,两者可以同时存在,也可以只填其中一个,如下

    parser.add_option("-o",  attr=value, ...)
    parser.add_option("--output",  attr=value, ...)
    parser.add_option("-o",  "--output", attr=value, ...)
    
  • attr=value表示此选项的一些属性, 这些属性保证了此模块的强大功能,下面说明一些常用的属性

    属性 默认值 说明
    Option.action "store"
    Option.type "string" 此选项需要的参数类型
    Option.dest 从选项字符串派生 可以做为存储此选项值的变量供程序使用
    Option.default NA 选项的默认值
    Option.help NA 选项的说明信息
    Option.metavar 从选项字符串派生 选项需要参数时,帮助信息中显示
    action属性说明

    当action使用默认值时可以不显示配置此属性,除了默认值最常用的两个值是store_truestore_false,分别表示当命令行中有此选项时,程序中此选项对应的变量值是TrueFalse,例如

    parse.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False,
                 help="print status messages to stdout")
    

    当命令行中使用-v或者--verbose选项时,变量verbose的值就是True,程序中后面就可以通过这个变量来做一些处理。

其他更多用法参考官方文档:定义选项option属性option组

调用parse_args()解析命令行,并将解析结果返回

函数原型:

(options, args) = parser.parse_args(args=None, values=None)
  • 函数参数一般不填
  • 返回值有两个,与getopt很类似;第一个返回值存放所有的选项相关信息;第二个返回值存放所有的参数信息

例如前面子的打印信息如下

itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -v -o test.log
opts = {'filename': 'test.log', 'verbose': True, 'num': 0}, args = []
filename = test.log, verbose = True, num = 0
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -v -o test.log -n 3
opts = {'filename': 'test.log', 'verbose': True, 'num': 3}, args = []
filename = test.log, verbose = True, num = 3
itsenlin@itsenlin-PC:~/Desktop/python_test$ 
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py -v -o test.log -n 3 a b c
opts = {'filename': 'test.log', 'verbose': True, 'num': 3}, args = ['a', 'b', 'c']
filename = test.log, verbose = True, num = 3
itsenlin@itsenlin-PC:~/Desktop/python_test$ python optparsetest.py 1 2  -v -o test.log -n 3 a b c
opts = {'filename': 'test.log', 'verbose': True, 'num': 3}, args = ['1', '2', 'a', 'b', 'c']
filename = test.log, verbose = True, num = 3
itsenlin@itsenlin-PC:~/Desktop/python_test$ 

从上面用法的打印结果可以看出两个返回值存放的信息;以及选项对应变量的使用

官方文档

optparse --- 解析器的命令行选项

相关文章

网友评论

      本文标题:python学习笔记之--命令行参数处理二(optparse)

      本文链接:https://www.haomeiwen.com/subject/nrdplrtx.html