使用的背景

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

在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. [luogu3203 HNOI2010] 弹飞绵羊 (分块)

    传送门 Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置, ...

  2. P1828 香甜的黄油 Sweet Butter (spfa)

    题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...

  3. Python-基础-day3

    基础数据类型 1.什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1 ...

  4. anaconda jupyter

    本文主要讲解在Ubuntu系统中,如何在Anaconda下安装TensorFlow以及配置Jupyter Notebook远程访问的过程. 在官方文档中提到,TensorFlow的安装主要有以下五种形 ...

  5. 【ACM-ICPC 2018 沈阳赛区网络预赛 K】Supreme Number

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然每个数字只可能是1,3,5,7 然后如果3,5,7这些数字出现两次以上.显然两个3||5||7都能被11整除. 然后1的话最多能 ...

  6. bash脚本编程知识储备

    bash脚本编程:     脚本程序:解释器解释执行: 首先得理清一些琐碎的知识点,我尽量把我所学的帮朋友一起梳理一下 编程环境:(我会在接下来的篇章,图文例子三结合的方式带大家一起学习)       ...

  7. iOS9中,swift判断相机,相册权限,选取图片为头像

    在iOS7以后要打开手机摄像头或者相册的话都需要权限,在iOS9中更是更新了相册相关api的调用 首先新建一个swift工程,在SB中放上一个按钮,并在viewController中拖出点击事件 ok ...

  8. lightoj--1245--Harmonic Number (II)(数学推导)

    Harmonic Number (II) Time Limit: 3000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu S ...

  9. linux服务器网站安全狗安装教程

    1.下载服务器安全狗和服务器网站安全狗,选择好版本.http://download.safedog.cn/safedog_linux64.tar.gz 这个是网站安全狗的下载地址2.登录centos进 ...

  10. Sqlite基本命令集合(linux/fedora/ubuntu)

    注:fedora自带sqlite3,无需安装,直接输入命令sqlite3即可. ------------Ubuntu在命令行输入sqlite3,确认没有安装在进行--- 1.安装sqlite3 ubu ...