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,就是用store就可以了,没必要研究那么多 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)
好了,搞定收工。