• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python中optparse模块使用浅析

Python中optparse模块使用浅析

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了python optparse,optparse,tb optparse,python os模块,python re模块等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

最近遇到一个问题,是指定参数来运行某个特定的进程,这很类似Linux中一些命令的参数了,比如ls -a,为什么加上-a选项会响应。optparse模块实现的也是类似的功能,它是为脚本传递命令参数。

使用此模块前,首先需要导入模块中的类OptionParser,然后创建它的一个实例(对象):
from optparse import OptionParser
parser = OptionParser()  #这里也可以定义类的参数,后续有
</div>

接着就可以添加选项了,基本语法:
parser.add_option(opt_str, ...,  
                  attr=value, ...)
</div>
    每个opt_str可以有多个选项字符串,比如-f 和--file(就行Linux命令行中ls -a和ls --all效果一样),只要定义了这些选项,则在命令行输入的时候这些选项就会被识别,否则报错。opt_str的定义可以如下:
parser.add_option("-f", "--file", ...)  #-f 和 --file 是作为调用时的参数的标签,会被识别
</div>
当选项被定义好后,则可以调用parse_args()函数来获取我们定义的选项和参数
(options, args) = parser.parse_args() #parse_args可以有参数,不定义的话使用默认的sys.argv[1:]
</div>
parse_args()返回两个值,一个是选项options(如:-f),另一个是参数args,即除选项options以外的值(如:test.txt)

add_option中最重要的四个option的属性是:action,type,dest(destination),help。这四个中action又是最基础的。

action参数(附带介绍了type、dest):

action参数告诉optparse该做什么当它在命令行中遇到选项时。action有三种存储方式:store、store_false、store_true。如果不指定action的值,默认的是store,它告诉optparse将继续读取下一个参数(type),保证类型的正确性,并将它将值存储在一个变量(dest)中,即将命令行中输入的字符串将它存为options的属性,这样可以直接调用。啰嗦了一大堆,我自己都被搞晕了~~~~,先看个例子吧!

>>> 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'
</div>

上述:当optparse看到选项-f时,它将继续读下一个参数是foo.txt,并将它存储在options.filename(这个filename就是add_option中的dest),之后dest的值将作为parser的属性被存储。所以,当调用parse_args函数时,options.filename的值就是foo.txt。这个是以“string”类型存储的,当然type也可以是int和float等,比如下面的:
parser.add_option("-n", type="int", dest="num")
</div>
注意,这个没有指定一个长字符串的选项(如:--number),这当然是可以的,不过命令行输入时选项就只能是-n了,也没有指定action,使用默认的“store”。再次使用模拟的命令行参数["-n22"](一个参数),也可以写成["-n  22"](作为两个参数来传递):
>>> parser.add_option("-n", type="int", dest="num")
<Option at 0x2d71308: -n>
>>> (options, args) = parser.parse_args(["-n22"])
>>> print options .num
22
</div>

如果不指定type参数,默认的是string类型,所以一个最简单的方式可以写成这样:
parser.add_option("-f", dest="filename")
</div>

action另两种值分别是:“store_true”和“store_false”,这一般作为一个标记使用,例如开始运行一个程序时将flag设为True,退出时将flag设为False。看了下面的例子就全明白了:当选项遇到v时,它将options.verbose设为True,当选项遇到q时,它将options.verbose设为False:

>>> 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
</div>

Default参数:

default参数很好理解了,即当没有指定dest的值时,给出个默认值,如下:
>>> parser.add_option("-x", action="store", dest="verbose", default="hahaha")
<Option at 0x2d77148: -x>
>>> options, args = parser.parse_args() #这里没有传参数
>>> options.verbose
'hahaha'
</div>
如果这样的话,那下面这两句的效果就一样了(前提是不给parse_args()函数传参:) 
parser.add_option("-v", action="store_true", dest="verbose")
parser.add_option("-q", action="store_false", dest="verbose", default=True)
</div>

help参数:

这个参数是为了让我们定义的“命令”更为逼真,还提供了帮助消息了呢!呵呵~~简单用法如下:
>>> from optparse import OptionParser
>>> usage = "myprog[ -f <filename>][-s <

您可能想查找下面的文章:

  • python optparse模块使用实例
  • Python中optparse模块使用浅析

相关文章

  • Python2.5/2.6实用教程 入门基础篇
  • 完美解决Python2操作中文名文件乱码的问题
  • python k-近邻算法实例分享
  • 基于python的七种经典排序算法(推荐)
  • 在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
  • Python实现删除Android工程中的冗余字符串
  • Python异常处理总结
  • 在SAE上部署Python的Django框架的一些问题汇总
  • 在Django的模型中执行原始SQL查询的方法
  • Python的math模块中的常用数学函数整理

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python迭代器与生成器详解
    • python字符串替换示例
    • python使用htmllib分析网页内容的方法
    • Python笔记(叁)继续学习
    • wxpython中利用线程防止假死的实现方法
    • python基于property()函数定义属性
    • Python代理抓取并验证使用多线程实现
    • Python的re模块正则表达式操作
    • python通过BF算法实现关键词匹配的方法
    • Python库urllib与urllib2主要区别分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有