python OptParse模块的用法详解
Posted wj-1314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python OptParse模块的用法详解相关的知识,希望对你有一定的参考价值。
OptParse模块的简单介绍
Python 有两个内建的模块用于处理命令行参数:
一个是 getopt只能简单处理 命令行参数;
另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的、符合Unix/Posix 规范的命令行说明。会自动帮你负责-h帮助选项。
要自己定制程序的参数选项控制,可以使用python自带的OptParse模块,当然也可以直接解析sys.argv里的参数(但是此比较麻烦)
import optparse optparse 现在不再更新了,更新版本叫 argparse. import argparse
OptParse支持一般性GUN的选项方法,包括:
无参选项, -v 有参选项, -p value, –para=value 值参一体, -pvalue (不支持长参数) 合并选项, -abc, -abcp value (最后一个可以是有参, 其余均无参)
解析时候 - 和 -- 的区别:
- 就看后面的值, 要是无参的, 那继续读下一个; 要是有参的,就把参数读进来(分隔或一体). -- 直接读后面的值;
optparse modlue基本用法
一,基本用法
1,载入OptionParser类,新建对象: OptionParser() 2,添加选项: add_option(…) 3,参数解析: parse_args()
举个例子:
# _*_ coding: utf-8 _*_ import optparse from optparse import OptionParser # 一个帮助文档解释字符串 hstr = ‘%prog custom help string‘ parser = OptionParser(hstr, description=‘custom description‘, version=‘%prog 1.0‘) #通过OptionParser类创建parser实例,初始参数usage中的%prog等同于os.path.basename(sys.argv[0]),即 #你当前所运行的脚本的名字,version参数用来显示当前脚本的版本。 ‘‘‘ 添加参数,-f、--file是长短options,有一即可。 dest=‘user‘ 将该用户输入的参数保存到变量user中,可以通过options.user方式来获取该值 action用来表示将option后面的值如何处理,比如: XXX.py -f test.txt 经过parser.parse_args()处理后,则将test.txt这个值存储进-f所代表的一个对象,即定义-f中的dest 即option.filename = ‘test.txt‘ action的常用选项还有store_true,store_false等,这两个通常在布尔值的选项中使用。 metavar仅在显示帮助中有用,如在显示帮助时会有: -f FILE, --filename=FILE write output to FILE -m MODE, --mode=MODE interaction mode: novice, intermediate, or expert [default: intermediate] 如果-f这一项没有metavr参数,则在上面会显示为-f FILENAME --filename=FILENAME,即会显示dest的值 defalut是某一选项的默认值,当调用脚本时,参数没有指定值时,即采用default的默认值。 ‘‘‘ 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)
结果:
content -f do not content -f Usage: optParse模块的练习.py custom help string custom description Options: --version show program‘s version number and exit -h, --help show this help message and exit -i INPUT, --input=INPUT read input data from input file -o OUTPUT, --output=OUTPUT write data to output file -q, --quite don‘t print the version -a ADD, --add=ADD add to handle -c, --count count to handle -d, --count1 count1 to handle Process finished with exit code 0
二,新建对象
parse = OptionParse()
形参包括:
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):
三,新建选项
3.1 可以使用下面几个方法:
add_option, add_option_group, add_options.
3.2 具体参数分析:
add_option(…): add_option 方法中前面的参数为命令的选项, 可以为等价的短名或者长名,一般是前面为短名,后面为长名. 可以配置的参数有以下: dest: 可以决定解析后,取值时的属性名, 尤其适于有多个等价参数. 不指定时就是选项不加-的字符串. type: 选项的值类型,值的默认类型是字符串, 这里将值指定为其他类型. default: 缺省值. 没有设置缺省值的为None. help: 选项中有 -h 时打印的 help 信息. metavar: 表示显示到 help 中选项的默认值; choices: 当 type 设置为 choices 时,需要设置此值. const: 指定一个常量值给选项, 该常量值将用于后面store_const和append_const,一起合用. action: 用于控制对选项和参数的处理,像无参数选项处理,可以设置为以下几种字符串: "store": 储存值到 dest 指定的属性,强制要求后面提供参数; "store_true": 当使用该选项时,后面的 dest 将设置为 true, 不跟参数. "store_false": 当使用该选项时,后面的 dest 将设置为 false. 常配合另一个 "store_true" 的选项使用同一个 dest 时使用. 不跟参数. "append": 储存值到 dest 指定的属性,并且是以数组的形式, 必须跟参数. "store_const": 用来存储参数为 const 设置的值到 dest 指定的属性当中.常用于 dest 为同名2个以上选项时的处理. 不跟参数. "append_const": 用来存储参数为 const 设置的数组到 dest 指定的属性当中. 不跟参数. "count": 使用后将给储存值到 dest 指定的属性值加1,可以统计参数中出现次数.用途不大. 不跟参数. "callback": 后面指定回调函数名(不加括号),会将相应opt和args传给回调函数. "help", "version": 对应为帮助和版本. 要另外自己设计时使用. 当 action 设置为 store_ture / store_false 时, 解析参数时, 如果有值时为 Ture / False, 没有值时为 None. 当 dest 相同时, 一个 action 设置为 store_false, 另一个 action 设置为 store_ture 时, 解析参数时,以在后面出现的为准.
四,选项相关参数:
4.1,可以用来同时设置多个选项的默认参数
def set_default(self, dest, value): def set_defaults(self, **kwargs):
4.2,检查是否有相应的选项
def has_option(self, opt_str):
4.3,删除选项
def remove_option(self, opt_str):
4.4,举个例子:
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
4.5,添加选项组 add_option_group()
如果 options 很多的时候, 可以进行分组,然后进行添加. 分组的好处是, 对一系列程序参数可以分一个组,如果有独立的 description , 可以另外处理.使用如下:
group = OptionGroup(parser) #创建分组 group.add_option() #添加选项 parser.add_option_group(group) #将分组加入到解释器
4.6,添加选项数组 add_options([Option1,…])
将各个Option对象放在一个列表里再一起添加
五,参数解析parse_args()
使用 parse_args()
对参数进行解析,默认是使用 sys.argv[1:]
作为参数, 也可以传递一个命令行参数列表: parse_args(list)
.
parse_args()
返回的两个值:
options,它是一个对象,保存有命令行参数值。只要知道命令行参数名,如 input,就可以访问其对应的值:options.input 。 args ,它是没被解析的命令行参数的列表。
六,帮助文档
默认自动带有 -h 和 --help 来输出帮助文档, 输出后程序终止.
帮助文档由三部分组成:
usage 帮助部分, usage 帮助部分一般在 OptionParser 初始化时输入,为第一个参数, 也可以用具体形参名指定. 可以使用 %prog 来表示当前的程序名. description 描述部分 在初始化 OptionParser 时 description 形参指定的内容. 选项以及选项说明部分 选项加入时定义的说明文字
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.
此文参考:https://www.jianshu.com/p/bec089061742
以上是关于python OptParse模块的用法详解的主要内容,如果未能解决你的问题,请参考以下文章