python基础之 optparse.OptionParser
optparse是专门用来在命令行添加选项的一个模块。
首先来看一段示例代码
|
from optparse import OptionParser MSG_USAGE = "myprog[ -f ][-s ] arg1[,arg2..]" optParser = OptionParser(MSG_USAGE) optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName") ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg', help="make lots of noise [default]") fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] options, args = optParser.parse_args(fakeArgs) print options.fileName print options.verbose print options print args print optParser.print_help() |
输入结果为
|
file.txt False {'verbose': False, 'fileName': 'file.txt'} ['this is some what', 'arg2', 'arge'] Usage: myprog[ -f ][-s ] arg1[,arg2..] Options: -h, --help show this help message and exit -f FILENAME, --file=FILENAME -v, --vison make lots of noise [default] |
基本使用步骤
1、 产生一个OptionParser的物件optParse。传入的值MSG_USAGE可被调用打印命令时显示出来。
|
MSG_USAGE = "myprog[ -f ][-s ] arg1[,arg2..]" optParser = OptionParser(MSG_USAGE) |
2、 调用OptionParser.add_option()添加选项
|
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg', help="make lots of noise [default]") |
add_option()参数说明:
action:存储方式,分为三种store、store_false、store_true
type:类型(我也不知道什么的类型)
dest:存储的变量
default:默认值
help:帮助信息
3、 调用OptionParser.parse_args()剖析并返回一个directory和一个list。
|
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] options, args = optParser.parse_args(fakeArgs) print options.fileName print options.verbose print options print args |
输出结果
|
file.txt False {'verbose': False, 'fileName': 'file.txt'} ['this is some what', 'arg2', 'arge'] |
parse_args()说明:
如果没有传入参加,parse_args会默认将sys.argv[1:]的值作为默认参数。这里我们将 fakeArgs模拟输入的值。
从返回结果中可以看到,
l options为是一个directory,它的内容fakeArgs为“参数/值 ”的键值对。
l args 是一个list,它的内容是fakeargs除去options后,剩余的输入内容。
l options.version和options.fileName都取到与options中的directory的值。
4、 调用OptionParser.optParser.print_help()输出帮助信息
|
optParser.print_help() |
显示返回结果
|
Usage: myprog[ -f ][-s ] arg1[,arg2..] Options: -h, --help show this help message and exit -f FILENAME, --file=FILENAME -v, --vison make lots of noise [default] |
optParser.print_help()说明:
1、最开始的的MSG_USAGE的值:在这个地方显示出来了。
2、自动添加了-h这个参数。
注:在MSG_USAGE中如果使用%prog,会被自动解析为sys.args[0] 也就是文件名。如将,MSG_USAGE = "%prog [options] arg1 arg2",假如文件名为 filexx,那么出现在help中的
信息就是" filexx[options] arg1 arg2"。
深入分析
OptionParser.add_option()
例:optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg',
help="make lots of noise [default]")
参数action:
存储方式,分为三种store、store_false、store_true。
下面分别对三种方式进行说明:
第一种:action = "store"
1、如果输入的参数fakeArgs中存在"-v",则verbose返回的值为fakeArgs中的紧跟'-v'的数,即"good luck to you"。这也正好options中的键值对应,剩下配对的参数都传给了args。请见以下代码
|
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") optParser.add_option("-v","--vison", action="store", dest="verbose") fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] options, args = optParser.parse_args(fakeArgs) print optParse.verbose print options print args |
输入结果
|
good luck to you {'verbose': 'good luck to you', 'fileName': 'file.txt'} ['arg2', 'arge'] |
2、如果输入的参数fakeArgs中不存在"-v",则verbose的返回值为None。
示例代码:
|
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") optParser.add_option("-v","--vison", action="store", dest="verbose") fakeArgs = ['-f','file.txt','good luck to you', 'arg2', 'arge'] options, args = optParser.parse_args(fakeArgs) print optParse.verbose print options print args |
输出结果
|
None {'verbose': None, 'fileName': 'file.txt'} ['good luck to you', 'arg2', 'arge'] |
第二种:action = "store_true"
1、fakeArgs中存在'-v',verbose将会返回True而不是"good luck to you"。意思就是说verbose的值与'-v'
的后一位无关,只与'-v'存不存在就关。
示例代码
|
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName") optParser.add_option("-v","--vison", action="store_true", dest="verbose") fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] options, args = optParser.parse_args(fakeArgs) print optParse.verbose print options print args |
输出结果
|
True {'verbose': True, 'fileName': 'file.txt'} ['good luck to you', 'arg2', 'arge'] |
2、fakeArgs中不存在'-v',verbose同样返回空(我就不运行代码了)。
第三种:action="store_false"
这与action="store_true"类似,只有其中有参数'-v'存在,则verbose的值为False,如果'-v'不存在,那么verbose的值为None。
参数:default
optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg')
设置些参数是用于返回verbose的返回值。
如果action="store",default='gggggg',代码如下。
optParser.add_option("-v","--vison", action="store_false", dest="verbose",default='gggggg')
fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge']
如果fakeArgs中存在'-v',则返回值为,"good luck to you"
如果不存在'-v'则返回值为,"gggggg"
如果action ="store_true",default='gggggg',代码如下。
optParser.add_option("-v","--vison", action="store_true", dest="verbose",default='gggggg')
如果fakeArgs中存在'-v',则返回值为True。
如果fakeArgs中不存在'-v',则返回值为None
再一次说明了,如果action="store_true"时,verbose的值只与是否'-v'有关。是否也说明了action_true的优先级高于default。
注:action="store_false"的功能与此类似,返回为False或者None。再一次证明了
参数:help
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")
optParser.add_option("-v","--vison", action="store", dest="verbose",default='gggggg',
help="make lots of noise [default]")
主要用于显示帮助信息,使用optParser.print_help()将帮助栏显示出来。
在action="restore"时对比没使用help参数的'-f'与使用了help参数的'-v',多了一行帮助信息。
|
Usage: myprog[ -f ][-s ] arg1[,arg2..] Options: -h, --help show this help message and exit -f FILENAME, --file=FILENAME -v VERBOSE, --vison=VERBOSE make lots of noise [default] |
在action="restore_false"时。
optParser.add_option("-f","--file",action = "store",type = "string",dest = "fileName")
optParser.add_option("-v","--vison", action="store", dest="verbose",default='gggggg',
help="make lots of noise [default]")
两个对比的输出结果如下
|
Usage: myprog[ -f ][-s ] arg1[,arg2..] Options: -h, --help show this help message and exit -f FILENAME, --file=FILENAME -v, --vison make lots of noise [default] |
参数:type
没有仔细测试,但知道一点时如果type="string"时,将无法使用action="store_false"和action="store_true"。不知是否可以将type理解成verbose的返回值类型。
关于输入的的参数fakeArgs的说明
还是用之前的代码分析
|
from optparse import OptionParser MSG_USAGE = "myprog[ -f ][-s ] arg1[,arg2..]" optParser = OptionParser(MSG_USAGE) optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName") optParser.add_option("-v","--vison", action="store", dest="verbose",default='gggggg', help="make lots of noise [default]") fakeArgs = ['-f','file.txt','-v','good luck to you', 'arg2', 'arge'] options, args = optParser.parse_args(fakeArgs) print options print args |
fakeArgs中的值对于各选项'-v','-f'来说都是前后两个值配对的。
1、正常情况:
结果如下
|
则options的值为: {'verbose':'good luck to you', 'fileName': 'file.txt'} args的值为: ['arg2', 'arge'] |
2、不正常情况:
如果连续出现两个选项'-f','-v'。
fakeArgs = ['-f','-v','good luck to you', 'arg2', 'arge']
'-v'作为值传给了fileName。
但verbose返回的是默认值'gggggg',如果没设置将会返回None。换句说话,就是没检测到参数'-v'的存在,这也再一次说明了,fakeArgs中键值配对的观念。前一个数作为选项,后一个作为值。
结果如下:
|
则options的值为: {'verbose':'gggggg', 'fileName': '-v'} args的值为: ['good luck to you','arg2', 'arge'] |
3、如果多出一个'x'未被定义则程序会报错。
fakeArgs = ['-x','-f','file.txt','-v','good luck to you', 'arg2', 'arge']
好了,关于optParse这个模块就只学到了这些东西。
python基础之 optparse.OptionParser的更多相关文章
- Day11 - Python基础11 模块学习——optparse
Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大 ...
- Python模块之optparse
参考: http://www.cnblogs.com/captain_jack/archive/2011/01/11/1933366.html https://docs.python.org/2/li ...
- Python基础教程【读书笔记】 - 2016/7/31
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章 充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括 ...
- Python 中使用optparse进行参数解析
使用过Linux/Unix的人都会知道,命令行下的很多命令都需要参数,在C语言中添加和解析参数比较繁琐.Python中提供了optparse模块可以非常方便地处理命令行参数. 1 命令行参数的样 ...
- Python参数输入模块-optparse
废话: 模块名是optparse, 很多人打成optparser.以至于我一直导入导入不了.搞的不知所以. 模块的使用: import optparse #usage 定义的是使用方法,%prog 表 ...
- Python模块学习——optparse
Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大 ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
- Python中的optparse模块的使用
optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数. 实例化一个 OptionParser 对象(可以带参,也可以不带参数),带参的话会把参数变量的内容作为帮助信息输 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
随机推荐
- javascirpt IP验证
js IP 端口验证 function isPort(str) { var parten=/^(\d)+$/g; if(parten.test(str)&&parseI ...
- 0104.1——视图控制器UIViewController
一.生命周期 当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc 创建对象,分配空间2.init (initWit ...
- c#程序为PDF文件填写表单内容
众所周知,PDF文件一般情况下是无法修改的,如果你有一张现成的PDF表格,这时想通过编程实现从数据库或者动态生成内容去填写这张表格,就会有些问题了,首先我们要解决以下2个重要的问题: 1.如何将内容写 ...
- uva 1596 Bug Hunt
In this problem, we consider a simple programming language that has only declarations of one-dimensi ...
- Jquery列表中的导航菜单的应用
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 如何系统地学习JavaScript
在过去,JavaScript只是被用来做一些简单的网页效果,比如表单验证.浮动广告等,所以那时候JavaScript并没有受到重视.自从AJAX开始流行后,人们发现利用JavaScript可以给用户带 ...
- Catch That Cow(BFS)
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- BC 65 ZYB's Premutation (线段树+二分搜索)
题目简述:有一个全排列,一直每个前缀区间的逆序对数,还原这个排列. fi记录逆序对数,pi记录该位置数值,则k=fi-f(i-1)表示前i-1个数比pi大的数的个数,那么只要在剩余元素求出按大小顺序第 ...
- VS2012 的MVC4实例
原文链接:http://wenku.baidu.com/link?url=nkq-UZd-Ui83Nuoh66n4KqdwK4V_zzKqakmmG6VBgq2BfWlMiPhz1JXN9R3CWxN ...
- 【iOS开发】collectionView 瀑布流实现
一.效果展示 二.思路分析 1> 布局的基本流程 当设置好collectionView的布局方式之后(UICollectionViewFlowLayout),当系统开始布局的时候,会调用 pre ...