Python模块学习之optparse

python 2.3里新增加了一个模块叫optparse,专门用来处理命令行选项的。

optparse在2.7以后的版本中已经不再继续开发,从2.7后将转向开发argparse模块

先从简单示例(demo.py)介绍

    from optparse import OptionParser  

    parser = OptionParser()
    parser.add_option("-f", "--file", dest="filename",
                      help="write report to FILE", metavar="FILE")       # 个人理解: dest是用于后面的options.filename来取得参数值的;                                           # metavar是用于帮助信息中显示的
    parser.add_option("-q", "--quiet",
                      action="store_false", dest="verbose", default=True,
                      help="don‘t print status messages to stdout")  

    (options, args) = parser.parse_args()  

$ python demo.py -h

--------------------------------------------

输出如下:

usage: demo.py [options]  [args]

options:

-h, --help            show this help message and exit

-f FILE, --file=FILE  write report to FILE

-q, --quiet           don‘t print status messages to stdout

parse_args() 返回的两个值:

  • options,它是一个对象或者说字典(options.Values),保存有命令行参数值。只要知道命令行参数名(由dest指定),如 filename,就可以访问其对应的值: options.filename 。
  • args,它是一个由 positional arguments 组成的列表。


示例1:    没有option选项

import optparse
import os

def main():
    p = optparse.OptionParser(description="Python ‘ls‘",
        prog="pyls",
        version="0.1",
        usage="%prog [directory]")

    (options,args) = p.parse_args()
    if len(args) == 1:
        # 此处第一个参数不是命令本身
        path = args[0]
        for filename in os.listdir(path):
            print filename
    else:
        p.print_help()

if __name__ == ‘__main__‘:
    main()


示例2: (action取值为 store_true, 这是一个boolean类型选择的demo, true/false)

import optparse
import os

def main():
    p = optparse.OptionParser(description="Python ‘ls‘",
        prog="pyls",
        version="0.2",
        usage="%prog [directory]")

    p.add_option("-v","--verbose",action="store_true",
        help="Enables Verbose Output.",default=False)

    (options,args) = p.parse_args()
    if len(args) == 1:
        if options.verbose:
            print "Verbose Mode Enabled"
        path = args[0]
        for filename in os.listdir(path):
            if options.verbose:
                print "Filename: %s" %filename
            else:
                print filename
    else:
        print p.print_help()

if __name__ == ‘__main__‘:
    main()

运行结果如下:



示例3:  (action取值为 count ,用于不同level级别的展示)

import optparse
import os

def main():
    p = optparse.OptionParser(description="Python ‘ls‘",
        prog="pyls",
        version="0.3",
        usage="%prog [directory]")

    p.add_option("-v",action="count",dest="verbose")
    (options,args) = p.parse_args()

    if len(args) == 1:
        if options.verbose:
            print "Verbose Mode Enabled at Level: %s" %options.verbose
        path = args[0]
        for filename in os.listdir(path):
            if options.verbose == 1:
                print "Filename: %s" %filename
            elif options.verbose == 2:
                fullpath = os.path.join(path,filename)
                print "Filename: %s | Bytes Size: %s" %(filename,os.path.getsize(fullpath))
            else:
                print filename
    else:
        p.print_help()

运行结果如下:



示例4:  (使用choice选项来枚举有限的集中情况)

import optparse
import os

def main():
    p = optparse.OptionParser(description="Python ‘ls‘",
        prog="pyls",
        version="0.4",
        usage="%prog [directory]")

    p.add_option("-c","--chatty",action="store",type="choice",
        dest="chatty",
        choices=["normal","verbose","quiet"],
        default="normal")

    (options,args) = p.parse_args()

    print options
    if len(args)  == 1:
        if options.chatty == "verbose":
            print "Verbose Mode Enabled"
        path = args[0]
        for filename in os.listdir(path):
            if options.chatty == "verbose":
                print "Filename: %s" %filename
            elif options.chatty == "quiet":
                pass
            else:
                print filename
    else:
        p.print_help()

if __name__ == ‘__main__‘:
    main()

运行结果如下:

示例5: (一个选项后面可以跟多个参数,通过nargs来指定参数个数)

import optparse
import os

def main():
    p = optparse.OptionParser(description="Python ‘ls‘ -- list contents of two directories",
        prog="pyls",
        version="0.5",
        usage="%prog [--dir dir1 dir2]")

    p.add_option("--dir",action="store",dest="dir",nargs=2)
    (options,args) = p.parse_args()

    if options.dir:
        for dir in options.dir:
            print "== Listing of %s: ==\n" %dir
            print "=" * 20
            for filename in os.listdir(dir):
                print filename
    else:
        p.print_help()

if __name__ == ‘__main__‘:
    main()

时间: 2024-08-24 15:21:52

Python模块学习之optparse的相关文章

python模块学习(2)——re模块

正则表达式并不是python的一部分,正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 下图展示了使用正则表达式进行匹配的流程:  正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符

Python 模块学习

模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.datetime 11.re 12.random 13.configparser 14.traceback 15.yaml 16.itertools 17.logging 18.urllib.urllib2 19.paramiko ###

python模块学习第 0000 题

将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果: 好可爱>%<! 题目来源:https://github.com/Yixiaohan/show-me-the-code,感谢@史江歌以及其他人,让我找到了一个系统的学习python模块的好地方. 看到这个题目的第一印象是——额,难不成让我找qq的API,然后在手机APP的壁纸上提示QQ消息?好吧,我承认自己想复杂了,所以第二个想法就来了.因为博主最近学习比较杂乱无章,所以学习了tkin

Python模块学习

python模块-time python模块-datetime

Python模块学习——optparse

optparse内建的模块用于处理Python 命令行参数. 简单流程 首先,必须 import OptionParser 类,创建一个 OptionParser 对象: from optparse import OptionParser [...] parser = OptionParser() 然后,使用 add_option 来定义命令行参数: parser.add_option(opt_str, ..., attr=value, ...) 每个命令行参数就是由参数名字符串和参数属性组成的

转载---Python模块学习optparse 处理命令行参数

参考资料 http://docs.python.org/library/optparse.html 原文地址 http://mrwlwan.wordpress.com/2008/09/25/python%ef%bc%9a-%e4%bd%bf%e7%94%a8-optparse-%e5%a4%84%e7%90% Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强

python模块学习之数据结构--collections.counter

python包含非常多的标准数据结构,如list,tuple,dict 和set 都是内置类型.除了这些基本的内置类型.python的collections模块还很多种数据结构实现. collections----容器数据类型模块 python版本:2.6以及以后版本 collections模块包含除内置內型list,dict 和tuple之外的数据类型. 1.1 Counter 1.1.1 Counter作为一个容器(啥是容器呢,能装入不同的对象就是容器),可以跟踪相同数据的次数. 初始化输入

Python模块学习笔记— —random

Python中的random模块用于生成随机数. random.random 函数原型 random.random() 生成一个范围在[0,1)的随机浮点数. import random print random.random() random.uniform 函数原型 random.uniform(a,b) 生成一个指定范围内的随机浮点数,两个参数一个是上限,一个是下限.如果a > b,则生成的随机数范围在[b,a].否则, 范围在[a,b]. import random print rand

【Python模块学习】sys模块

sys模块的操作如下: 1 sys.argv # 实现从程序外部向程序传递参数. 2 sys.exit([arg]) # 程序中间的退出,arg=0为正常退出. 3 sys.getdefaultencoding() # 获取系统当前编码,一般默认为ascii. 4 sys.setdefaultencoding() # 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时