python optparse模块

为了从更快的的使用这个模块,我们会省略一些东西,开始吧。

1. 加载模块

from optparse import OptionParser

2. 实例化OptionParse,可以理解为表明useage和version:如

parser = OptionParser(usage="usage: %prog [options] <start directory> <OPTIONAL: filename regex>",
                         version="%prog 1.0")

3. 添加参数,如-c,--csv啥的,也就是你想要添加的功能参数。你可以添加很多,随你的需要

parser.add_option("-c", "--csv",#-c 就是参数的缩写了:-c,--csv也是全程了,其实是一个意思,用那个都行
                     action="store",#这里可以游3个值,store,store_true,store_false,如果-a后面还有一个参数,比如目录,那么就需要用store,如果没有参数,就用store_true或者store_false
                     dest="is_csv",#这个很重要,是存储的变量,后面的程序调用参数的值就靠它了,比如is_sev 是true还是false。is_cev 后面的文件路径等
                     default=False,#缺省值
                     help="generate CSV outfile",#help时的输出信息
                     metavar="FILECSV")#说明参数的的类型,是路径还是文件等。

4. 解析参数,赋值给options和args。

(options, args) = parser.parse_args()
'''
如果我将options和args 打印出来是这样的
print args,len(args)
print options
['c:/test'] 1
{'test1':False,'test2':False}



options让你可以通过直接调用前面提到的过dest中的值来访问参数,
例如:
if options.is_all:
    你要执行的代码

argv就是参数的列表了,加入命令是这样的test.py -a -c  /usr/test
那么:argv[0] 就是 /usr/test  
    

'''

5. 好了,现在已经解析完参数了,剩下就是处理逻辑了,当用户指定了这个参数,我们应该做什么处理。应该怎么做呢?

首先如果我这个程序是需要用户给出至少一个参数的,并且我想判断下他给的路径是不是存在的,那么我可以这么做:

if len(args) < 1:
       parser.print_help()
       print ""
       sys.exit()

  
if os.path.exists(args[0]) == False:
       parser.error("Invalid path")

然后需要处理具体的参数的逻辑:

 

然后处理参数的逻辑:

if options.is_csv:
       csv_array.insert(0,csv_header)
       fileOutput = csv.writer(open(options.is_csv, "wb"))
       fileOutput.writerows(csv_array)

好了,搞定收工。

posted @ 2013-10-25 15:54  马僧  阅读(455)  评论(0编辑  收藏  举报