python的内置模块中对于命令行的解析模块共两个getopt 和 optparse 。不过getopt过于简单,往往不能满足需求。此时可以使用optparse模块。这个模块相对于getopt更新,功能更强大。

那么如何使用optparse模块呢? optparse 模块的官方文档给出了很详细的说明。

第一步、导入模块,并在主函数中创建实例

from optparse import OptionParser
[...]
parser = OptionParser()

第二步、使用add_option定义需要的option

parser.add_option(opt_str, ...,attr=value, ...)

add_option 方法中有很多可选的参数,及一些影响optparse函数行为的属性。这些东西都很值得去细细推敲。

最后一步、当定义完所有option 后,通过parse_args 去解析所有的option。并返回解析结果

(options, args) = parser.parse_args()

parse_args 默认解析的是sys.argv[1:] 的所有参数。不过若你喜欢,也可以自己传递参数到parse_args。例如如下的形式:

args = ["-f", "foo.txt"]
(options, args) = parser.parse_args(args)

parse_args 有两个返回值,options 和 args 。其中options是一个对象,通过这个对象可以获取到所有定义的option相应信息。而args是一个list,里面存储了所有没有被定义的参数信息。

以上三个步骤,就是使用optparse模块的完整体现。不过在第二步中add_option中存在很多影响pars_args行为的属性,将在下面逐步记录解释。

action 属性:

它将告诉optparse 遇到相应的命令行时应该怎么去做。默认若不指定action属性,它将被赋予默认值store。那么store是什么意义呢?以官方的实例说明

当添加如下的option:

parser.add_option("-f", "--file",action="store", type="string", dest="filename")

且传递如下的参数:

args = ["-f", "foo.txt"]
(options, args) = parser.parse_args(args)

当optparse 发现参数-f 时,它会将-f后面的一个参数也消费掉(将-f 和 foo.txt绑定到一起了)。并将foo.txt存储到options.filename中。当经过parse_args解析后,调用options.filename时将得到foo.txt这个值。

以上是action的默认值store。另外还有布尔类型的action。这样类型的东西主要是在命令行参数不需要值的时候使用。例如 -v 查看版本号, -v 后面就需要再写参数了。

Example:

parser.add_option("-v", action="store_true", dest="verbose")
parser.add_option("-q", action="store_false", dest="quit")

以上两个例子,当经过parse_args后调用options.verbose将为true。而调用options.quit将为false

当然,action还有其他一些值。如:store_const、append、count 和 callback 。研究后再呈上文章吧。

default属性:

给相应的参数设置默认值,也是一个很有必要知道的属性

Example:

parser.add_option("-v", action="store_true", dest="verbose", default=False)
parser.add_option("-q", action="store_false", dest="verbose", default=True)

另外一种比较清晰的方法设置默认值:

parser.set_defaults(verbose=True)
parser.add_option(...)
(options, args) = parser.parse_args()

等等吧。具体了解,还需参考相应的官方手册:https://docs.python.org/2/library/optparse.html

转载于:https://blog.51cto.com/unixman/1687388

Python中的 optparse模块相关推荐

  1. 介绍Python中的__future__模块

    这篇文章主要介绍了介绍Python中的__future__模块,__future__模块使得在Python2.x的版本下能够兼容更多的Python3.x的特性,需要的朋友可以参考下 Python的每个 ...

  2. python中的logging记录日志_[ Python入门教程 ] Python中日志记录模块logging使用实例...

    python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到 ...

  3. python使用教程cmd啥意思-Python 中的cmd模块学习

    Python中的cmd模块类型提供了一个创建命令行解析器的框架.简单的来说,可以继承Cmd来创建命令行界面,然后对所有想处理的命令command执行do_command方法.默认情况下,它使用read ...

  4. python中的绘图模块turtle的使用

    python中的绘图模块turtle的使用(7-20190125) 文章目录: 还是从一个有趣的小应用开始,turtle的骚操作吧 最近小猪配齐比较流行,下面用turtle绘制一个粉红色的小猪猪吧-- ...

  5. linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...

    本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...

  6. Python中的random模块

    Python中的random模块用于随机数生成,对几个random模块中的函数进行简单介绍.如下: random.random() 用于生成一个0到1的随机浮点数.如: import random r ...

  7. python中的log模块笔记

    日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日志输出中添 ...

  8. python中的系统模块_python中一些获取系统信息的模块

    1.platform模块 python中,platform模块给我们提供了很多方法去获取操作系统的信息 如: import platform platform.platform() #获取操作系统名称 ...

  9. 深入理解python中的select模块

    简介 Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqueue ...

最新文章

  1. Linux之socket套接字编程20160704
  2. 2018.90.20列表
  3. c语言编程后总有一个错误,C语言编程,之后出现错误,请大神帮忙看下什么问题?...
  4. Qt 生成 ui 对应的 h 文件和 cpp 文件的方法
  5. 日历记事本java代码_急需日历记事本JAVA源代码
  6. echarts解决自适应图表被压缩问题
  7. android自验签名证书,没有以前的互联网连接,无法验证Android自签名证书
  8. Jsp中Uploadify插件的使用(jQuery上传插件)
  9. 英特尔第11代台式机处理器发布:或将是14nm最后的倔强
  10. 全球首发!计算机视觉Polygon Mesh Processing读书笔记6——微分几何中的Metric Properties
  11. Atitit 突发事件应急处置相关制度和措施 1. 第一章 总则 1 2. 第二章 突发事件分类 2 2.1. (一)治理类 2 2.2. (二)运营类 2 2.3. (三)环境类 3 2.4.
  12. mysql中的utf-8_永远不要在MySQL中使用UTF-8
  13. 1041: 谭浩强C语言(第三版)习题5.5
  14. (进来补知识啦!)利用双四选一数据选择器74153实现十六选一数据选择器(包含74153简单解释)
  15. STM32——SDIO进行SD卡读写测试
  16. 网络信息安全之信息系统安全保障
  17. JS偏函数、组合函数、缓存函数
  18. ida pro 反汇编 Android so 库后修改 arm 汇编指令的方法总结
  19. Python3网络爬虫:腾讯新闻App的广告数据抓取
  20. “51媒体网“媒体邀约,媒体现场采访的优势

热门文章

  1. Metric Learning度量学习:**矩阵学习和图学习
  2. node多版本管理--nvmw
  3. 面向对象程序设计 第六次作业
  4. LNMP服务跨省迁移的解决方案
  5. Python:使用pypdf2合并、分割、加密pdf文件。
  6. Flink SQL Client实现CDC实验
  7. html放缩都让内容处于正中间
  8. ubuntu19.10安装remarkable
  9. class与case class的区别(转载)
  10. sklearn没有实现ID3算法