浅谈optparse 解析命令行参数库
使用的背景
在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数
在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。
下面我们写个用例脚本进行简单的说明:
首先我们要导入模块 from optparse import OptionParser
- 创建一个 用户help说明的文档参数 (这个是可选的)
usage="myprog [-f<filename>][-s<xyz>]arg1[,arg2..]"
- 创建一个实例对象 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 解析命令行参数库的更多相关文章
- linux 中解析命令行参数(getopt_long用法)
linux 中解析命令行参数(getopt_long用法) http://www.educity.cn/linux/518242.html 详细解析命令行的getopt_long()函数 http:/ ...
- optparse模块解析命令行参数的说明及优化
一.关于解析命令行参数的方法 关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考: ...
- boost之program_options库,解析命令行参数、读取配置文件
一.命令行解析 tprogram_options解析命令行参数示例代码: #include <iostream> using namespace std; #include <boo ...
- Windows下解析命令行参数
linux通常使用GNU C提供的函数getopt.getopt_long.getopt_long_only函数来解析命令行参数. 移植到Windows下 getopt.h #ifndef _GETO ...
- 微软官方的.net命令行参数库
虽然现在是图形化大行其道的时代,但让程序支持命令行启动对于专业的领域还是有不少需求的..net本身并没有内置对命令行解析的支持,我之前就写过一篇文章让.Net程序支持命令行启动介绍了几个第三方的命令行 ...
- python解析命令行参数
常常需要解析命令行参数,经常忘记,好烦,总结下来吧. 1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表 参数个数:len(sys.a ...
- C语言中使用库函数解析命令行参数
在编写需要命令行参数的C程序的时候,往往我们需要先解析命令行参数,然后根据这些参数来启动我们的程序. C的库函数中提供了两个函数可以用来帮助我们解析命令行参数:getopt.getopt_long. ...
- 3.QT中QCommandLineParser和QCommandLineOption解析命令行参数
1 新建项目 main.cpp #include <QCoreApplication> #include <QCommandLineParser> #include & ...
- 使用 Apache Commons CLI 解析命令行参数示例
很好的输入参数解析方法 ,转载记录下 转载在: https://www.cnblogs.com/onmyway20xx/p/7346709.html Apache Commons CLI 简介 Apa ...
随机推荐
- Elasticsearch 入门 - 安装、启动和配置
安装 请参阅elastic官网 :Installing Elasticsearch 启动 使用 ./bin/elasticsearch 命令即可启动 使用 ./bin/elasticsearch -d ...
- prim求最小生成树
一直以来只会Kruskal prim和dijkstra很像 只不过prim维护的是最短的边,而dijkstra维护的是最短的从起点到一个点的路径 同时prim要注意当前拓展的边是没有拓展过的 可以用堆 ...
- Top English interview Q&A
http://www.hjenglish.com/new/p581292/ vocabulary endeavour [ɪn'devər] relevant ['reləvənt] , efficie ...
- Mybatis拦截器执行过程解析
上一篇文章 Mybatis拦截器之数据加密解密 介绍了 Mybatis 拦截器的简单使用,这篇文章将透彻的分析 Mybatis 是怎样发现拦截器以及调用拦截器的 intercept 方法的 小伙伴先按 ...
- @Bean 指定初始化和销毁方法
bean 的生命周期 bean 的创建 --> 初始化 --> 销毁 ioc 容器管理 bean 的声明周期 可以自定义初始化和销毁方法 构造器( 对象创建 )被调用时机 单实例:在容器启 ...
- Spark SQL Catalyst源代码分析之Analyzer
/** Spark SQL源代码分析系列文章*/ 前面几篇文章解说了Spark SQL的核心运行流程和Spark SQL的Catalyst框架的Sql Parser是如何接受用户输入sql,经过解析生 ...
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十一章 属性
11.1 使用属性值 @property float rainHandling; //表明此类具有float类型的属性,其名称为rainHandling 注意:属性的名称不必与实例变量名称同样. @s ...
- 通过Src下载图片存到指定目录
string src = temppartsrc + "." + pictype; HttpWebRequest request = (HttpWebReq ...
- ubuntu13.10升级到ubuntu14.04
Upgrading from Ubuntu 13.10 To upgrade from Ubuntu 13.10 on a desktop system: Open Software Sources. ...
- 2016.03.28,英语,《Vocabulary Builder》Unit 07
vis: comes from a Latin verb meaning 'see'. vision: ['vɪʒn] n. 视觉,先见之明,光景,视力,眼力,幻想,影像 vt. 幻想. ; vid- ...