python中模块optparse获取参数详解

python作为我们干运维的重要的语言,肯定我们大家都写了不少,我们写东西不是为了给我们自己用,而是我们团队或者更多人用。

那么就不得不说下python下获取参数的方法啦。python自带的模块optparse就是我们一直喜欢和常用的啦(当然也有getopt,但是没这个好用)。废话不说了,下面说说怎么用吧!!

首先贴一下官方文档地址:http://docs.python.org/2/library/optparse.html

讲之前先引用下默认字体自带的例子:

from optparse import OptionParser
    
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                         help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
                         action="store_false", dest="verbose", default=True,
                         help="don't print status messages to stdout")
    
(options, args) = parser.parse_args()
这里引入了两个参数,分别是: -f 和 -q 。 可以看到通过add_option函数添加选项。-f参数中,add_option函数参数上面依次是短选项,长选项,描述信息,帮助信息,默认变量名。
下面的-q参数,是用来表示后面不需要跟参数的情况。add_option函数参数上面依次是短选项,长选项,存储动作(默认是store、还有store_false和store_true),,默认值,帮助信息。

在action中:store_ture/store_false保存相应的布尔值。这两个动作被用于实现布尔开关。

除了上面出现的参数,还有type(表示参数的数据类型:有string,int等)。

我们还可以把参数进行分组,使用方法optparse.OptionGroup。

group = OptionGroup(parser, "title", "description")
group.add_option("-g", action="store_true", help="Group option.")
parser.add_option_group(group)
然后还有version,usage, description的用法,完整的见下面截图:

好了,贴一下运行结果:

root@AN-BT5:/apps/python# python test.py -h
Usage: test.py [options] arg1 arg2
 
this is a test script!!!
 
Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -f FILE, --file=FILE  write report to FILE
  -n NUMBER, --num=NUMBER
                        define number
  -q, --quiet           don't print status messages to stdout
 
  title:
    description
 
    -g                  Group option.
root@AN-BT5:/apps/python# python test.py -n 1
{'number': 1, 'verbose': True, 'g': None, 'filename': None}
[]
root@AN-BT5:/apps/python# python test.py -n 1 -f test.txt
{'number': 1, 'verbose': True, 'g': None, 'filename': 'test.txt'}
[]
root@AN-BT5:/apps/python# python test.py -n 1 -f test.txt -g
{'number': 1, 'verbose': True, 'g': True, 'filename': 'test.txt'}
[]
root@AN-BT5:/apps/python# python test.py -n 1 -f test.txt -g 1
{'number': 1, 'verbose': True, 'g': True, 'filename': 'test.txt'}
['1']
root@AN-BT5:/apps/python# python test.py -n 1 -f test.txt -g
{'number': 1, 'verbose': True, 'g': True, 'filename': 'test.txt'}
[]
root@AN-BT5:/apps/python#
还有个函数print_help我们也经常用到,在校验的时候输出help信息。好了,最后在你脚本里面试试吧

时间: 2024-09-06 11:51:59

python中模块optparse获取参数详解的相关文章

Python中的choice()方法使用详解

 这篇文章主要介绍了Python中的choice()方法使用详解,是Python入门中的基础知识,需要的朋友可以参考下     choice()方法从一个列表,元组或字符串返回一个随机项. 语法 以下是choice()方法的语法: ? 1 choice( seq ) 注意:此函数是无法直接访问的,所以我们需要导入random模块,然后我们需要使用random对象来调用这个函数. 参数 seq -- 这可能是一个列表,元组或字符串... 返回值 该方法返回一个随机项. 例子 下面的例子显示了cho

Python中的变量和作用域详解_python

作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: G:globa,全局变量,就是模块级别定义的变量: B:built-in,系统固定模块里面的变量,比如int, bytearray等. 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB. x = int(2.9) # int bu

Python中的深拷贝和浅拷贝详解

  这篇文章主要介绍了Python中的深拷贝和浅拷贝详解,本文讲解了变量-对象-引用.可变对象-不可变对象.拷贝等内容,需要的朋友可以参考下 要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) [变量-对象-引用] 在Python中一切都是对象,比如说:3, 3.14, 'Hello', [1,2,3,4],{'a':1}...... 甚至连type其本身都是对象,type对象 Python中变量与C/C++/Ja

Python中tell()方法的使用详解

  这篇文章主要介绍了Python中tell()方法的使用详解,是Python入门学习中的基础知识,需要的朋友可以参考下 tell()方法返回的文件内的文件读/写指针的当前位置. 语法 以下是tell()方法的语法: ? 1 fileObject.tell() 参数 NA 返回值 此方法返回该文件中读出的文件/写指针的当前位置. 例子 下面的例子显示了tell()方法的使用. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #

Python中的rfind()方法使用详解

  这篇文章主要介绍了Python中的rfind()方法使用详解,是Python入门中的基础知识,需要的朋友可以参考下 rfind()方法返回所在子str 被找到的最后一个索引,或者-1,如果没有这样的索引不存在,可选择限制搜索字符串string[beg:end]. 语法 以下是rfind()方法的语法: ? 1 str.rfind(str, beg=0 end=len(string)) 参数 str -- 此选项指定要搜索的字符串 beg -- 这是开始索引,默认情况下为 0 end -- 这

Python中的rjust()方法使用详解

  这篇文章主要介绍了Python中的rjust()方法使用详解,是Python学习入门中的基础知识,需要的朋友可以参考下 rjust()该方法返回字符串合理字符串的右边的长度宽度.填充是通过使用指定的fillchar(默认为空格).如果宽度小于len(s)返回原始字符串. 语法 以下是rjust()方法的语法: ? 1 str.rjust(width[, fillchar]) 参数 width -- 这是字符串填充后总共的长度. fillchar -- 这是填充字符,默认为空格. 返回值 此方

seajs中模块的解析规则详解和模块使用总结

 这篇文章主要介绍了seajs中模块的解析规则详解和模块使用总结,需要的朋友可以参考下 seajs github 模块标识已经说的相对清楚了.但并没有面面俱到,特别是当你需要手写 [模块ID]和[模块依赖]的时候,或者自己写自动化工具来做 transport 的时候(ps:spm貌似适应性不是很强也不易用,毕竟每个项目的目录结构可能相差很大,且不易改变.当然如果他的定位是包管理工具就别指望它来做你的项目的自动化构建工具了),ID的解析规则就需要了解透彻了. 注意事项: 1. 顶级标识始终相对 b

Python中运算符"=="和"is"的详解_python

前言 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同.下面来看看具体区别在哪. Python中比较两个对象是否相等,一共有两种方法,简单来说,它们的区别如下:      is是比较两个引用是否指向了同一个对象(引用比较).      ==是比较两个对象是否相等. >>> a = [1, 2, 3]

Python中的推导式使用详解

  这篇文章主要介绍了Python中的推导式使用详解,本文分别讲解了列表推导式.字典推导式.集合推导式使用实例,需要的朋友可以参考下 推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,速度快等优点.推导式包括: 1.列表推导式 2.字典推导式 3.集合推导式 嵌套列表推导式 NOTE: 字典和集合推导是最近才加入到Python的(Python 2.7 和Python 3.1以上版). 下面简要介绍下: [列表推导式] 列表推导能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到