Python 中使用optparse进行参数解析
使用过Linux/Unix的人都会知道,命令行下的很多命令都需要参数,在C语言中添加和解析参数比较繁琐。Python中提供了optparse模块可以非常方便地处理命令行参数。
1 命令行参数的样子
我们一般在使用命令行程序的时候,可能会看到大约这样的样子(这是我写的一个简单命令行帮助列表):
Usage: run.py [options] args Options:
--version show program's version number and exit
-h, --help show this help message and exit
-c CLIENT_NUM, --clients=CLIENT_NUM
number of clents
-t TIME, --time=TIME test time in seconds
在C语言中,我们可能需要使用printf来打印所有的内容,但是请注意上面的内容不是手动打印的,而是optparse自动生成的。下面一点一点来解释这个过程。
2 optparse简单使用过程
当然,首先得导入模块:
from optparse import OptionParser
我们一般使用的是optparse的OptionParser类。
实例化一个OptionParse类,在实例化时可以实现上面命令行帮助信息中的第一行:
usage = "usage: %prog [options] args"
parser = OptionParser(usage,version="%prog 0.1 ")
简单解释一下。我们可以向OptionParser传入参数,上面传入的是usage和version。当然不传入参数也是可以的。常用参数有:
usage:就是展示的第一行内容,默认是“%prog [options]”
version:传入这个参数可以让帮助信息增加--version选项,用来显示定义的软件版本信息。
description:描述这个程序。
add_help_option:这个参数产生-h选项来显示帮助信息,默认是开启的。
prog:可以看到上面使用了%prog,这个就是产生所执行的程序的程序名。(在我的例子里是run.py)
然后,我们需要添加必要的选项信息。
parser.add_option("-c", "--clients",dest="client_num",help="number of clents")
使用add_option可以添加选项。具体使用方法见:https://docs.python.org/2/library/optparse.html#optparse.OptionParser.add_option
这样我们就向程序添加了选项,有了选项我们就该根据选项进行相应的操作了。
(options, args)=parser.parse_args()
得到option和args后再根据值进行相应的操作。
非常简单,非常好用。
Python 中使用optparse进行参数解析的更多相关文章
- python中的argparse模块(参数解析)
import argparseparse = argparse.ArgumentParser()parse.add_argument("a", help="params ...
- Python中list作为默认参数的陷阱
在Python中,作为默认参数的一定要是不可变对象,如果是可变对象,就会出现问题,稍不注意,就会调入陷阱,尤其是初学者,比如我(┬_┬). 我们来看一个例子. def add(L=[]): L.app ...
- Python常见经典 python中if __name__ == '__main__': 的解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
- python argparse:命令行参数解析详解
简介 本文介绍的是argparse模块的基本使用方法,尤其详细介绍add_argument内建方法各个参数的使用及其效果. 本文翻译自argparse的官方说明,并加上一些笔者的理解 import a ...
- python中定义函数和参数的传递问题
作者:達聞西链接:https://zhuanlan.zhihu.com/p/24162430来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 5.2.4 函数.生成器和类 ...
- python中的函数的参数和可变参数
最近在搞python的过程中需要用到给函数传可变参数..所以去网上找前人的帖子学习了一下 为了尊重原作者,这里附上链接:http://www.cnblogs.com/tqsummer/archive/ ...
- python中函数的默认参数陷阱问题
其实也不能说是陷阱,只是一个不容易注意到的地方,尤其是有其他java/c++类编程语言经验的人员,这里涉及到python的一个特点,所以笔者说是陷阱只是一个噱头而已. def test(item, b ...
- python 中_init_函数以及参数self
1)class类包含: 类的属性:类中所涉及的变量 类的方法:类中函数 2)_init_函数(方法) 1.首先说一下,带有两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问. 2. ...
- Python中的print、input函数以及Python中交换两个变量解析
一.Python中的值交换操作 首先明确一点点,Python中的一切都是面向对象的,可以理解为Python的中一切都是对象. 我们知道Java也是面向对象的语言,但是在Java中定义一个值变量如下: ...
随机推荐
- anaconda在linux下的安装注意事项
不应该做什么 官网原文: Installation Instructions Linux Install These instructions explain how to install Anaco ...
- HDU-4742 Pinball Game 3D 三维LIS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4742 题意:求3维的LIS.. 用分治算法搞得,参考了cxlove的题解.. 首先按照x排序,然后每个 ...
- 十个提升你Emacs生产力的高招
转载 十个提升你Emacs生产力的高招 Emacs是世界上最好的编辑器(真的有很多人这么认为).不要以为emacs只是在编写程序时很牛X,其实只要你真正精通了emacs,会发现她几乎在所有用到打字 ...
- Linux服务器集群系统(一)(转)
add by zhj:虽然是2002年的文章,但读来还是收益良多.在 章文嵩:谈LVS及阿里开源背后的精彩故事 中LVS发起人及主要贡献者谈了LVS的开发过程及阿里开源的一些故事 原文:http:// ...
- ubuntu下允许root用户ssh远程登录
原文:http://blog.sina.com.cn/s/blog_7e64a87b0100rn8w.html SSH服务器,可以通过SSH协议登录远程服务器,但是ubuntu默认是启用了root用户 ...
- linux 下终端复用软件推荐——tmux
使用过些linux终端,比如Tilda.Terminator. 之前最经常用的是Terminator,其可以上下左右分屏,比较方便,但其有个缺点是经常无故崩溃. 后来遇到Tmux,根据网上的设置配置了 ...
- [iOS基础控件 - 6.10.4] 项目启动原理 项目中的文件
A.项目中的常见文件 1.单元测试Test 2.Frameworks(xCode6 创建的SingleView Project没有) 依赖框架 3.Products 打包好的文件 4. p ...
- c语言 while (~scanf("%d%d",&n,&m)) 在这里这个符号“~”是什么意思
按位取反,简单地说就是二进制1变0,0变1 由于scanf是有返回值的,且返回值为int型 特别的此处用法导致只有scanf返回-1,循环才会结束,也就是要返回EOF while (~scanf(&q ...
- JAVA小笔记
一.system.err.println() 和 system.out.println() 有什么不同 同时使用了System.out.println与System.err.println()打印输入 ...
- mapreduce2运行流程