使用的背景

在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数

在python中我们可以通过sys 模板的argv 但是这模板功能远没有今天我们介绍的optparse模块强大。


介绍下最基本的用法:

  • 使用optionparser模块来解析
  • optionparser的执行过程:
  • 导入optionparser : from optparse import OptionParser构造optionparser的对象:parser = OptionParser()
  • 往optionparser对象中增加option :parser.add_option()
  • 调用optionparser的解析函数:(options, args) = parser.parse_args()在options中使用解析到的options,在args中使用其他的args。

下面我们写个用例脚本进行简单的说明:

  1. 首先我们要导入模块    from  optparse import  OptionParser
  2. 创建一个  用户help说明的文档参数 (这个是可选的)
    usage="myprog [-f<filename>][-s<xyz>]arg1[,arg2..]"
  3. 创建一个实例对象 optParser=OptionParser(usage)

4.   在对象中增加参数选项   optParser.add_option("-f","--file",action="store",type="string",dest="filename",help='-f参数说明信息 ')
                                          optParser.add_option("-v","--version",action="store_false",dest="verbose",default="None",help="-v参数说明信息",)

5.调用optionparser的解析函数 让用户输入的命令保存在optParser.parse_args(y) y中  options,args=optParser.parse_args()


整体的脚本


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")
optParser.add_option("-v","--vison",action="store_false",dest="verbose",default="none",help="make losts of noise [default]")
fakeArgs=['-f',"file.txt",'-v','good luck to you','arg2','arg']
options,args=optParser.parse_args(fakeArgs) print options.filename
print args
print options.verbose


运行结果:

分析  因为我们传入了参数-f文件名为 file.txt.当我们条用options.filenmae  时就显示我们的传入的文件名为file.txt

我们传入的参数没有被脚本调用被传入了ARGS 列表中

因为我们第一action 为 store_false 所以不管-v传入什么参数。verbose的值都没false(store_ture 相反)



实例:

 from optparse import OptionParser
optParser = OptionParser()
optParser.add_option("-n","--number",action = "store",type="int",dest = "intNumber")
optParser.add_option("-v","--version", action="store_false", dest="verbose",default='gggggggg',help="no help")
options, args = optParser.parse_args()
if options.intNumber is not None:
#num = options.intNumber
print options.intNumber,options.verbose else:
for i in range(1,5):
#num = i
print i

结果

注意一点当你设置action_false 如果没有传入参数测不生效。如看上面第一次执行

浅谈optparse 解析命令行参数库的更多相关文章

  1. linux 中解析命令行参数(getopt_long用法)

    linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...

  2. optparse模块解析命令行参数的说明及优化

    一.关于解析命令行参数的方法 关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考: ...

  3. boost之program_options库,解析命令行参数、读取配置文件

    一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...

  4. Windows下解析命令行参数

    linux通常使用GNU C提供的函数getopt.getopt_long.getopt_long_only函数来解析命令行参数. 移植到Windows下 getopt.h #ifndef _GETO ...

  5. 微软官方的.net命令行参数库

    虽然现在是图形化大行其道的时代,但让程序支持命令行启动对于专业的领域还是有不少需求的..net本身并没有内置对命令行解析的支持,我之前就写过一篇文章让.Net程序支持命令行启动介绍了几个第三方的命令行 ...

  6. python解析命令行参数

    常常需要解析命令行参数,经常忘记,好烦,总结下来吧. 1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表 参数个数:len(sys.a ...

  7. C语言中使用库函数解析命令行参数

    在编写需要命令行参数的C程序的时候,往往我们需要先解析命令行参数,然后根据这些参数来启动我们的程序. C的库函数中提供了两个函数可以用来帮助我们解析命令行参数:getopt.getopt_long. ...

  8. 3.QT中QCommandLineParser和QCommandLineOption解析命令行参数

     1  新建项目 main.cpp #include <QCoreApplication> #include <QCommandLineParser> #include & ...

  9. 使用 Apache Commons CLI 解析命令行参数示例

    很好的输入参数解析方法 ,转载记录下 转载在: https://www.cnblogs.com/onmyway20xx/p/7346709.html Apache Commons CLI 简介 Apa ...

随机推荐

  1. @Autowired @Resource @Inject 自动注入

    一.@AutoWired ( spring 的注解 )自动注入 /** * @Autowired: * 默认按照 Student 类型去容器中找对应的组件:applicationContext.get ...

  2. 洛谷——P1115 最大子段和

    https://www.luogu.org/problem/show?pid=1115#sub 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 输入文件ma ...

  3. 51nod 1413:权势二进制

    1413 权势二进制 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一个十进制整数被叫做权势二进制,当他的十进制 ...

  4. [React Router] Create a ProtectedRoute Component in React Router (setState callback to force update)

    In this lesson we'll create a protected route just for logged in users. We'll combine a Route with a ...

  5. linux下jenkins安装

    在安装jenkins之前.首先确认jdk和tomcat,maven已经配置好 详细配置方法,请看的我博客. jdk:jdk的安装与配置 tomcat:tomcat的安装与配置 maven:maven的 ...

  6. getColor()方法过时的替代方法

    Android SDK 升級到 23 之後,getResource.getColor(R.color.color_name) 過時 使用新加入的方法 ContextCompat.getColor(co ...

  7. ListView的adapter中getView方法一直调用

    当ListView的高度不定(比如重写ListView搞成可自己主动的扩展的ListView)或 ListView嵌套在SrollView(高度不定)中,listView中的一个item元素改变会使得 ...

  8. sqlite学习笔记7:C语言中使用sqlite之打开数据库

    数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...

  9. CCDirector导演类

    CCDirector类是Cocos2D-x游戏引擎的核心.它用来创建而且控制着屏幕的显示,同一时候控制场景的显示时间和显示方式. 在整个游戏里一般仅仅有一个导演.游戏的開始.结束.暂停都会调用CCDi ...

  10. Oracle的awr和ash

    1.     10g之前 用户的连接将产生会话,当前会话记录保存在v$session中:处于等待状态的会话会被复制一份放在v$session_wait中.当该连接断开后,其原来的连接信息在v$sess ...