python之optparse
Python有两个内建的模块用来处理命令行参数
一个是getopt只能简单处理命令行参数
一个是optparse,功能更强大,而且易于使用,可以方便地生成标准的,符合Unix/Posix规范的命令行说明,会自动负责-h帮助选项
#!/usr/bin/env python2.6
# coding: utf-8 import optparse # 一个帮助文档解析字符串
hstr = '%prog custom help string'
parser = optparse.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='dont\'t print the version')
# parser.add_option('-v', '--version', action='store_true', dest='input', default=False, help='print the version'')
# parser.add_option('-v', '--input', action='store', dest='input', help='print the version') # parser.add_option('-v', '--input', action='store', dest='input', help='print the version') parser.add_option('-f', '--file', action='store', dest='file', help='file to hand')
parser.add_option('-a', '--add', action='append', dest='add', help='add to hand')
parser.add_option('-c', '--count', action='count', dest='count', help='count to hand')
parser.add_option('-d', '--count1', action='count', dest='count', help='count1 to hand') # 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', 'someForFile', 'someForFile1', '-q', '-a', 'test1 test2 test3', '-c', '-d', '-h']
options, args = parser.parser_args(testArgs) print 'option: %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.add:
print 'add in args: %s' $ options.add print 'version in args', options.version
Optparse支持一般性GUN的选项方法,包括
无参选项:-v
有参选项:-p value , -para=value
参值一体:-pvalue(不支持长参数)
合并选项:-abc,-abcp value(最后一个可以是有参的,其余均无参)
解析时,- 和 -- 的区别
- 就看后面的值,要是无参的,那就继续读下一个;要是有参,就把参数读进来(分隔或一体)
-- 直接读后面的值
optparse现在不更新了,更新版本叫argparse
optparse module
基本用法:
1 载入OptionParse类,新建对象:OptionParser()
2 添加选项:add_option(...)
3 参数解析:parse_args()
新建对象
parser = optparse.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_options,add_option_group,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,常用于dest为同名2个以上选项时的处理, 不跟参数
append:储存值到dest指定的属性中,并且以数组形式,必须跟参数
store_const:用来存储参数为const设置的值到dest指定的属性当中,常用于dest为同名2个以上选项时的处理,不跟参数
append_const:用来存储参数为const设置的数组到dest指定的属性,不跟参数
count:使用后将给存储值到dest指定的属性加1,可以统计参数中出现的次数,用途不大,不跟参数
callback:后面指定回调函数名(不加括号),会将相应的opt和args传给回调函数
help,version:对应帮助和版本,要另外自己设计时使用
当action设置为store_true/store_false时,解析参数时,如果有值时为true/false,没有值时为None
当dest相同时,一个action设置为store_false,另一个action设置为store_true时,解析参数时,以后面出现的为准
选项相关参数
可以用来同时设置多个选项的默认参数
def set_default(self, opt, 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
添加选项组add_option_group()
如果options很多的时候,可以进行分组,然后进行添加,分组的好处是,对一系列程序参数可以分一个组,如果有独立的description,可以另外处理,使用如下:
group = OptionGroup(parser) #创建分组
group.add_option() #添加选项
parser.add_option_group(group) #将分组加入到解释器
添加选项数组add_options([option1,...])
将各个Option对象放在一个列表里再一起添加
参数解析 parse_args()
使用parse_args()对参数进行解析,默认是使用sys.argv[1:]作为参数,也可以传递一个命令行参数列表:parse_args(list)
parse_args有两个值:
options:它是一个对象,保存有命令行参数值,只要知道命令行参数名,如input,就可以访问其对应的值:option.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
python之optparse的更多相关文章
- python 模块 optparse
optparse,是一个能够让程式设计人员轻松设计出简单明了.易于使用.符合标准的Unix命令列程式的Python模块.生成使用和帮助信息. 下面是一个简单的示例: import optparse p ...
- python—模块optparse的用法
1.什么是optparse: 在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数 optparse用于处理命令行 ...
- python模块----optparse模块、argparse模块 (命令行解析模块)
简介 optparse module---自版本3.2以来已弃用:optparse模块已弃用,将不再进一步开发:将继续使用argparse模块进行开发.optparse使用一种更具声明性的命令行解析方 ...
- python模块—optparse
处理命令行参数 1 #-*-coding:utf-8-*- __author__ = 007 __date__ = 16 / 1 / 19 from optparse import OptionPar ...
- python之optparse模块
测试例子 #!/usr/bin/env python2.7 import sys import os from optparse import OptionParser def parse_optio ...
- Python系列 - optparse
我们知道sys.argv[] 可以获得命令行参数 同样,optparse 对此提供了更为强大的功能. import optparse class ArgvHandler(object): def __ ...
- Python中optparse模块使用浅析
转载:http://www.jb51.net/article/59296.htm 最近遇到一个问题,是指定参数来运行某个特定的进程,这很类似Linux中一些命令的参数了,比如ls -a,为什么加上-a ...
- python中optparse模块用法
optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数. 首先需要引入optparser模块,然后执行初始化,实例化一个OptionParser对象(可以带参,也可以不带 ...
- python的optparse模块使用
name or flags:就是参数的名称或标志 -f --file,-q --quit 等,其中-f表示option的缩写,--file表示option的全称 nargs:命令行参数的个数,一般使用 ...
随机推荐
- 第二章 psql客户端工具
第二章 psql客户端工具 pgAdmin是一款功能丰富.开源免费的PostgreSQL图形化工具.psql是PostgreSQL自带的命令行工具,功能全面,是PostgreSQL数据库工程师必须熟练 ...
- python接口自动化三(登录绕开验证码及发帖)
前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 但是这里需要明确 ...
- 对GraphQL-BFF:微服务背景下的前后端数据交互方案的研究-------引用
随着多终端.多平台.多业务形态.多技术选型等各方面的发展,前后端的数据交互,日益复杂. 同一份数据,可能以多种不同的形态和结构,在多种场景下被消费. 在理想情况下,这些复杂性可以全部由后端承担.前端只 ...
- spring cloud-1
- 在Linux下使用命令行打印文件
近期需要将数学笔记打印出来复习,才发现Linux KDE环境下的默认PDF软件Okular根本无法将我在GoodNotes B5大小的页面写下的内容自适应地放大到A4纸上,只能以页面的原始尺寸打印.然 ...
- windows10 gcc编译C程序(分步编译)
下面演示gcc对C源程序的分步编译过程: 1. 编译(Compile) gcc hello.cpp -c # 生成hello.o,目标文件名字和源文件名字一样,VC编译会生成.ojb文件,gcc编译器 ...
- sh_04_第1个函数改造
sh_04_第1个函数改造 name = "小明" # say_hello() # Python 解释器知道下方定义了一个函数 def say_hello(): "&qu ...
- Mongodb副本集集群搭建
一.环境准备 1.1.主机信息(机器配置要求见硬件及开发标准规范文档V1.0) 序号 主机名 IP 1 DB_01 10.202.105.52 2 DB_02 10.202.105.53 3 DB_0 ...
- a = a + b 与 a += b 的区别
1.对于同样类型的a,b来说 两个式子执行的结果确实没有什么区别.但是从编译的角度看吧(武让说的),a+=b;执行的时候效率高. 2.对于不同类型的a,b来说 2.1 不同类型的两个变量在进行运 ...
- 新年春节EDM邮件内容设计案例分享
春节自古以来都是中国最重要的节日.随着中国的发展,中国的春节在世界上都已受到越来越多人的关注,有许多国家和地区都将春节定为法定假日.与此同时,许多品牌营销商也选择在这个时候为中国客户发送马年新年邮件, ...