zycchen 发表于 2017-5-8 08:33:11

python中使用optparse模块简化命令行编写的复杂度

  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关键字表示
  看一下代码的输出:
  $ ./person.py

Hello person1 , age is 30 ,job is 30
  $ ./person.py -h

Usage: person.py


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
  $ ./person.py --name xiaoxiao

Hello xiaoxiao, age is 30 ,job is 30
页: [1]
查看完整版本: python中使用optparse模块简化命令行编写的复杂度