Python中optparser库用法实例详解


Posted in Python onJanuary 26, 2018

本文研究的主要是Python中optparser库的相关内容,具体如下。

一直以来对optparser不是特别的理解,今天就狠下心,静下心研究了一下这个库。当然了,不敢说理解的很到位,但是足以应付正常的使用了。废话不多说,开始今天的分享吧。

简介

optparse模块主要用来为脚本传递命令参数功能.

引入

在IDE中引入optparser是很方便的。

from optparser import OptionParser

初始化

相对而言,初始化需要我们多注意一点点了。
因为我们有两种不同的方式来初始化一个parser。

带有Usage选项:

这样的好处是可以模拟带有帮助的终端使用,如下

>>> from optparse import OptionParser
>>> usage = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"
>>> parser=OptionParser(usage) #这里为类添加了参数usage

显示的时候就会使这样的了。

>>> parser.print_help()
Usage: myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]
Options:
 -h, --help      show this help message and exit #此两行根据option自动生成,比较智能额~~
 -f FILENAME, --file=FILENAME
            no any help #自定义帮助信息

不带Usage选项:

正常来说可以不用设置参数。

parser = OptionParser()

添加选项

为命令行添加选项是我们这次最主要的工作了,也是核心。但是在添加选项之前,我们应该明白,为什么要添加选项?选项的工作原理是什么?这样我们才能更好的理解optparser的设计思想。

选项:类比于Unix的工作模式。举例 ls -a 或者 ls -all.
我们添加了一个名为all 的选项,为了简化操作,默认设置为a.

在OptionParser中要想实现这样的一个效果,我们只需要借助如下的一行代码。

# 这只是示意而已,没有什么意义
parser.add_option('-a' , '--all' )

核心

作为核心就是指add_option的其他的参数。有如下几个:

  • action: 验证输入数据类型是否和type 匹配,并将符合要求的这个参数存储到dest变量中。有以下几个属性:

1.store 默认值
- store_false 标记而已 配合下边的那个store_true来进行代码的“标记”,辅助流程控制。

2.store_true 标记而已

  • type : 指的是对应于参数,如-f,-n等的接下来的那个参数的数据类型,有string,int,float等等
  • dest : 用于保存临时变量,其值可以作为options的属性进行访问。存储的内容就是如-f,-n 等紧挨着的那个参数内容。
  • help: 提供用户友好的帮助信息,一般可以用来解释本add_option方法的功能阐述。

单纯的讲起来很枯燥,下面看一个小例子就会明白了。

>>> parser.add_option("-f", "--file",action="store", type="string", dest="filename")
<Option at 0x2d72f48: -f/--file>
>>> args = ["-f", "foo.txt"] #这个是模拟命令行的输入
>>> (options, args) = parser.parse_args(args)
>>> options.filename
'foo.txt'

对于action属性可以看看接下来的这段代码。

>>> from optparse import OptionParser
>>> parser=OptionParser()
>>> parser.add_option("-v", action="store_true", dest="verbose")
<Option at 0x2ceb888: -v>
>>> parser.add_option("-q", action="store_false", dest="verbose")
<Option at 0x2d68e48: -q>
>>> fakeArgs = ['-v','hello']
>>> options, args = parser.parse_args(fakeArgs)
>>> options.verbose
True
>>> fakeArgs = ['-q','bye bye']
>>> options, args = parser.parse_args(fakeArgs)
>>> options.verbose
False
#如果同时写两个选项v和q,它会以哪个为准呢,答案是以最后出现的为准
>>> fakeArgs = ['-q','bye bye','-v','hello']
>>> options, args = parser.parse_args(fakeArgs)
>>> options .verbose
True

非核心

这里主要是讲解一下关于default参数的作用,其实就是给dest的默认值。

如果我们没有指定dest的值的话,default的值就会作为dest的默认值来进行使用!

>>> parser.add_option("-x", action="store", dest="verbose", default="defaultvalue")
<Option at 0x2d77148: -x>
>>> options, args = parser.parse_args() #这里没有传参数
>>> options.verbose
'defaultvalue'

完整的demo

from optparse import OptionParser
usage = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]"
optParser = OptionParser(usage)
optParser.add_option("-f","--file",action = "store",type="string",dest = "fileName")
ooptParser.add_option("-v","--vison", action="store_false", dest="verbose",default='None',
           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 <filename>][-s <xyz>] arg1[,arg2..]
Options:
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
-v, --vison make lots of noise [default]

总结

以上就是本文关于Python中optparser库用法详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
Python实现按中文排序的方法示例
Apr 25 Python
python使用Matplotlib画饼图
Sep 25 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
python 实现多线程下载视频的代码
Nov 15 Python
Python遍历字典方式就实例详解
Dec 28 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
python删除csv文件的行列
Apr 06 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
python利用socketserver实现并发套接字功能
Jan 26 #Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 #Python
Python编程实现的简单神经网络算法示例
Jan 26 #Python
Django使用httpresponse返回用户头像实例代码
Jan 26 #Python
Django rest framework基本介绍与代码示例
Jan 26 #Python
Python实现PS图像调整之对比度调整功能示例
Jan 26 #Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 #Python
You might like
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
使用Python对Access读写操作
2017/03/30 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
中专毕业生自荐信范文
2013/11/28 职场文书
道士塔读书笔记
2015/06/30 职场文书
旅游安全责任协议书
2016/03/22 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技