pythonpython小册Python

Python - OptParse 分析命令行输入模块

2017-07-09  本文已影响916人  fuyoufang

要自己定制程序的参数选项控制, 可以使用 Python 自带的 OptParse 模块。

import optparse

也可以直接解析 sys.argv 里的参数,但是过于麻烦。

OptParse 支持一般性 GNU 的选项方法,包括:

解析时,--- 的区别:

optparse 现在不再更新了,更新版本叫 argparse.

optparse module

基本用法:

  1. 载入OptionParser类,新建对象: OptionParser()
  2. 添加选项: add_option(…)
  3. 参数解析: parse_args()
from optparse import OptionParser

# 一个帮助文档解释字符串
hstr = '%prog custom help string'
parser = OptionParser(hstr, description='custom description', version='%prog 1.0')
parser.add_option('-i', '--input', action='store', dest='input', help='read input data from input file')
parser.add_option('-o', '--output', action='store', dest='output', help='write data to output file')
parser.add_option('-q', '--quite', action='store_false', dest='version', help='don\'t print the version')
# parser.add_option('-v', '--version', action='store_true', dest='version', default=False, help='print the version')
# parser.add_option('-v', '--version', action='store_true', dest='version', help='print the version')

parser.add_option('-f', '--file', action='store', dest='file', help='file to handle')
parser.add_option('-a', '--add', action='append', dest='add', help='add to handle')
parser.add_option('-c', '--count', action='count', dest='count', help='count to handle')
parser.add_option('-d', '--count1', action='count', dest='count', help='count1 to handle')

#parser.add_option('-v', '--version', dest='version')

# if parser.has_option('-f'):
#     print('content -f')
#     parser.set_default('-f', 'myFile')
#     parser.remove_option('-f')
#
# if not parser.has_option('-f'):
#     print('do not content -f')


# 用一个数组模拟命令参数
#testArgs = ['-i', 'someForInput', '-f', 'someForFile', '-vq', '-a', 'test1 test2 test3', '-c', '-d']
testArgs = [ '-i', 'someForInput', 'someForFile', 'someForFile1', '-q', '-a', 'test1 test2 test3', '-c', '-d', '-h']
options, args = parser.parse_args(testArgs)

print('options : %s' % options)
print('args : %s' % args)

if options.input:
    print('input in args : %s' % options.input)

if options.version:
    print('version 1.0.0')

# if options.file:
#     print('file in args : %s' % options.file)

if options.add:
    print('add in args : %s' % options.add)

print('version in args', options.version)

新建对象

parser=OptionParser()

形参包括:

    def __init__(self,
                 usage=None,
                 option_list=None,
                 option_class=Option,
                 version=None,
                 conflict_handler="error",
                 description=None,
                 formatter=None,
                 add_help_option=True,
                 prog=None,
                 epilog=None):

新建选项

可以使用:add_option, add_option_group, add_options.

add_option(…):
add_option 方法中前面的参数为命令的选项, 可以为等价的短名或者长名,一般是前面为短名,后面为长名.

可以配置的参数有以下:

当 action 设置为 store_ture / store_false 时, 解析参数时, 如果有值时为 Ture / False, 没有值时为 None.
当 dest 相同时, 一个 action 设置为 store_false, 另一个 action 设置为 store_ture 时, 解析参数时,以在后面出现的为准.

参数详细.

选项相关函数:

    def set_default(self, dest, value):

    def set_defaults(self, **kwargs):
    def has_option(self, opt_str):
    def remove_option(self, opt_str):

eg.

parser = OptionParser()
parser.add_option('-f', '--file', action='store', dest='file', help='file to handle')
if parser.has_option('-f'):
    print('content -f')
    parser.set_default('-f', 'myFile')
    parser.remove_option('-f')

if not parser.has_option('-f'):
    print('do not content -f')

输出

content -f
do not content -f
group = OptionGroup(parser)  #创建分组
group.add_option() #添加选项
parser.add_option_group(group) #将分组加入到解释器

参数解析 parse_args()

使用 parse_args() 对参数进行解析,默认是使用 sys.argv[1:] 作为参数, 也可以传递一个命令行参数列表: parse_args(list).

parse_args() 返回的两个值:

帮助文档

默认自动带有 -h 和 --help 来输出帮助文档, 输出后程序终止.
帮助文档由三部分组成:

  1. usage 帮助部分,
    usage 帮助部分一般在 OptionParser 初始化时输入,为第一个参数, 也可以用具体形参名指定. 可以使用 %prog 来表示当前的程序名.

  2. description 描述部分
    在初始化 OptionParser 时 description 形参指定的内容.

  3. 选项以及选项说明部分
    选项加入时定义的说明文字

OptionParser 的形参 version 可以指定 --version 输出的字符串, 同样支持%prog, 如 version="%prog 1.0"

# 一个帮助文档解释字符串
hstr = '%prog custom help string'
parser = OptionParser(hstr, description='custom description')

get_usage(), get_description(), get_version(): 获得对应的字符串.
print_help(), print_usage(), print_description(), print_version(): 输出相应内容
error(str): 出错并输出str.

引用
Python分析命令行输入:OptParse模块

上一篇 下一篇

猜你喜欢

热点阅读