Python 的 OptionParser 模块

OptionParser  可以方便地生成标准的、符合Unix/Posix 规范的命令行说明。

from optparse import OptionParser

parser = OptionParser()
parser.add_option(‘-p‘, ‘--pdbk‘, action = ‘store_true‘, dest = ‘pdcl‘, default = False, 
                help = ‘write pdbk data to oracle db‘)
parser.add_option(‘-z‘, ‘--zdbk‘, action = ‘store_true‘, dest = ‘zdcl‘, default = False, 
                help = ‘write zdbk data to oracle db‘)
(options, args) = parser.parse_args()

if options.pdcl == True:
    print ‘pdcl is true.‘
if options.zdcl == True:
    print ‘zdcl is True.‘

简单流程

# 引入OptionParser类,创建OptionParser对象
from optparse import OptionParser
parser = OptionParser()

# 定义命令行参数
parser.add_option(opt_str, ..., attr = value, ...)

# 解析命令行参数
(options, args) = parser.parse_args()

可以在程序中手动传递一个命令行列表到parse_args(),否则默认使用 sys.argv[:-1]
parse_args()返回两个值,options 保存命令行参数值,args 是由 positional arguments 组成的列表

add_option() 用来加入选项,parse_args() 解析选项

示例:

from optparse import OptionParser

parser = OptionParser()
parser.add_option(‘-f‘, ‘--file‘, dest = ‘filename‘, metavar = ‘FILE‘, 
                help = ‘write report to FILE‘)
parser.add_option(‘-q‘, ‘--quit‘, action = ‘store_false‘, dest = ‘verbose‘, default = True,
                help = ‘Don\‘t print status message to stdout.‘)

(options, args) = parser.parse_args()

action 默认 store 表示将参数值保存到 options 对象里

示例:

from optparse import OptionParser
parser = OptionParser()

parser.add_option(‘-f‘, ‘--file‘, action = ‘store‘, type = ‘string‘, dest = ‘filename‘)
args = [‘-f‘, ‘foo.txt‘]
(options, args) = parser.parse_args(args)

print options.filename

type 默认 ‘string‘,也可以是 ‘int‘ 或 ‘float‘ 等,长参数名可选,dest 未指定时将用命令行的参数名来存取 options 对象的值

store 其他两种形式:store_true 和 store_false,还有 store_const、append、count、callback

示例:

parser.add_option(‘-v‘, action = ‘store_true‘, dest = ‘verbose‘)
parser.add_option(‘-q‘, action = ‘store_false‘, dest = ‘verbose‘)
# 当解析到 ‘-v‘, options.verbose 为 True,解析到 ‘-q‘,options.verbose 为 False

default 设置参数默认值

示例:

parser.add_option(‘-f‘, action = ‘store‘, dest = ‘filename‘, default = ‘foo.txt‘)
parser.add_option(‘-v‘, action = ‘store_true‘, dest = ‘verbose‘, default = True)
# 也可以使用 set_default()
parser.set_defaults(filename = ‘foo.txt‘, verbose = True)
parser.add_option(...)
(options, args) = parser.parse_args()

help 生成帮助信息

示例:

usage = ‘usage: %prog [options] arg1 arg2‘
parser = OptionParser(usage = usage)
parser.add_option(‘-v‘, ‘--verbose‘, action = ‘store_true‘, dest = ‘verbose‘, default = True, 
                help = ‘make lots of noise [default]‘)
parser.add_option(‘-q‘, ‘--quiet‘, action = ‘store_false‘, dest = ‘verbose‘, 
                help = ‘be very quiet‘)
parser.add_option(‘-f‘, ‘--filename‘, metavar = ‘FILE‘, 
                help = ‘write output to FILE‘)
parser.add_option(‘-m‘, ‘--mode‘, metavar=‘MODE‘, default = ‘intermediate‘, 
                help = ‘interaction mode: novice, intermediate, or expert [default: %default]‘)

optparse 解析到 help 后不再解析其他命令行参数,usage 信息会优先打印,默认 "usage: %prog [options]"

metavar 提醒用户该参数期待的参数,如 metavar = ‘mode‘ 会在帮助中显示成 -m MODE, --mode=MODE

OptionGroup 参数分组

示例:

group = OptionGroup(parser, ‘Dangerous Options‘, 
                   ‘Caution: use these options at your own risk. It is believed that some of them bite.‘)
group.add_option(‘-g‘, action = ‘store_true‘, help = ‘Group option.‘)
parser.add_option_group(group)

version 创建OptionParser对象时指定该参数,会解释成 --version 命令行参数

optparser 可以自动探测并处理一些用户异常,也可以使用 parser.error() 方法来自定义部分异常的处理

if options.a and options.b:
    parser.error(‘options -a and -b are mutually exclusive‘)
时间: 2024-07-30 10:18:24

Python 的 OptionParser 模块的相关文章

Python中optionParser模块的使用方法[转]

本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. 示例如下: ? 1 2 3 4 5 6 7 8

Python中subprocess 模块 创建并运行一个进程

python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" call(cmd, shell=True) 运行之后: 1:打开并浏览了test.txt文件 2:删除了test.txt文件 from subprocess import call import shlex cmd = &

python时间处理模块 datetime time模块 deltetime模块

1 首先介绍time模块,因为简单 python 自带模块 本人使用time模块,只使用两个函数 time函数和sleep函数 import time a.     time.time()   函数 返回unix时间  常用作两个时间差的计算 b.     time.sleep()  休眠多久,精度为子秒(subsecond) In [90]: t1 = time.time() In [91]: t1 Out[91]: 1461400225.877932 In [92]: time.sleep(

python安装mysqldb模块

今天在阿里云一台新的服务器部署程序后台,发现上面的python缺少MySQLDB 模块,记录安装过程. 首先django程序,运行 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb MySQLdb模块的包名字叫mysql-python,于是pip安装之,(关于pip,可以参考这篇文章) 运行: pip install mysql-python

Python 利用pytesser模块识别图像文字

使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the Tesseract engine from Google.是谷歌OCR开源项目的一个模块,可将图片中的文字转换成文本(主要是英文). 1.pytesser安装 使用设备:win8 64位 PyTesser使用Tesseract OCR引擎,将图像转换到可接受的格式,然后执行tesseract提取出文

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

[ python编程 ] subprocess模块学习总结

转载:http://www.jb51.net/article/48086.htm 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息. 一.subprocess以及常用的封装函数    运行python的时候,我们都是在创建并

定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)

1 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) 2 import urllib.request 3 4 def get_page(url): 5 response = urllib.request.urlopen(url) 6 html = response.read() 7 return html 8 9 print(get_page(url='https://www.baidu,com'))