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

2022-02-19  本文已影响0人  itsenlin

简介

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对象

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

这两个信息是在创建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, ...)

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

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

函数原型:

(options, args) = parser.parse_args(args=None, values=None)

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

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 --- 解析器的命令行选项

上一篇 下一篇

猜你喜欢

热点阅读