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进行一些简单的自然语言处理的教程
Mar 31 Python
python对html代码进行escape编码的方法
May 04 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
Python 画出来六维图
Jul 26 Python
python 回溯法模板详解
Feb 26 Python
python动态规划算法实例详解
Nov 22 Python
Python函数调用追踪实现代码
Nov 27 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
浅析51个PHP处理字符串的函数
2013/08/02 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
python常见的格式化输出小结
2016/12/15 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
了解一下python内建模块collections
2020/09/07 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
护士自我介绍信
2014/01/13 职场文书
元旦联欢会感言
2014/03/04 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android