python中的optparse模块用来编写命令行工具非常实用,下面通过一个例子来阐述一下。
----------------------------
person.py 模块:
-n/--name | the person's name
-a/--age | the person's age
-j/--job | the psrson's job
--------------------------------
#!/usr/bin/env python
from optparse import OptionParser
import sys
def main():
p = OptionParser()
p.add_option('-n','--name',dest='person_name',help='person\'s name',default='person1')
p.add_option('-a','--age',default=30, help='person\'s age')
p.add_option('-j','--job',default='software engineer', help='person\'s job')
options, args = p.parse_args()
print 'Hello %s' %options.person_name, ', age is %d' %int(options.age), ',job is %s' %options.job
if __name__ == '__main__':
main()
先来看看OptionParser中的add_option方法,这个方法可以添加命令行参数,支持常见的参数形式,一种是以一个‘-’开头的并跟一个单词的首写字母,另外一个是一‘--’开头的跟一个单词的全称。
parse_args()返回两个值:
一个是所有可选参数的字典,记录了可选参数以及可选参数对应的值,另外一个是位置参数的列表。在本例中,变量options得到的就是可选参数以及可选参数对应的值,类型为字典。args包含了位置参数的列表。
后面的key-work参数可以提供:
1)参数的默认值,用default关键字表示,比如default='person1'表示如果没有提供-n/--name,则这个选项的默认值就是person1.
2) 选项的属性,如果没有dest,则用默认的--后面的作为选项的属性,比如对age选项的添加,这里没有dest,所以用age作为默认的属性,可以用options.age得到它的值
3) 对某个选项的帮助信息,用help关键字表示
看一下代码的输出:
[wangxf@localhost exec]$ ./person.py
Hello person1 , age is 30 ,job is 30
[wangxf@localhost exec]$ ./person.py -h
Usage: person.py [options]
Options:
-h, --help show this help message and exit
-n PERSON_NAME, --name=PERSON_NAME
person's name
-a AGE, --age=AGE person's age
-j JOB, --job=JOB person's job
[wangxf@localhost exec]$ ./person.py --name xiaoxiao
Hello xiaoxiao, age is 30 ,job is 30