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中的CURL PycURL使用例子
Jun 01 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
Python 硬币兑换问题
Jul 29 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
python zip()函数使用方法解析
Oct 31 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
pytorch实现建立自己的数据集(以mnist为例)
Jan 18 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
如何基于python把文字图片写入word文档
Jul 31 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
python openssl模块安装及用法
Dec 06 Python
Python中的 No Module named ***问题及解决
Jul 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
php 中文和编码判断代码
2010/05/16 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
详解php中反射的应用
2016/03/15 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
JS input 数字验证代码
2009/07/30 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
一篇.NET面试题
2014/09/29 面试题
倡议书范文格式
2014/05/12 职场文书
竞赛口号大全
2014/06/16 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
2015年少先队活动总结
2015/03/25 职场文书
2015年林业工作总结
2015/05/14 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫