zoukankan      html  css  js  c++  java
  • 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)

    好了,搞定收工。

  • 相关阅读:
    一个好的时间函数
    Codeforces 785E. Anton and Permutation
    Codeforces 785 D. Anton and School
    Codeforces 510 E. Fox And Dinner
    Codeforces 242 E. XOR on Segment
    Codeforces 629 E. Famil Door and Roads
    Codeforces 600E. Lomsat gelral(Dsu on tree学习)
    Codeforces 438D The Child and Sequence
    Codeforces 729E Subordinates
    【ATcoder】D
  • 原文地址:https://www.cnblogs.com/maseng/p/3391853.html
Copyright © 2011-2022 走看看