阅读目录
一、optparse
二、configparser
三、logging
一、optparse
1 模块介绍
optparse是一个比旧的getopt模块更方便、灵活和强大的解析命令行选项的库
2 简单示例
编辑test.py
from optparse import OptionParser
# 实例对象
parser = OptionParser()
# 添加参数 -f 指定一个文件名称
parser.add_option("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE")
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()
print("options:", options) # {'filename': 'aaa', 'verbose': False}
print("args:", args) # ['bbb']
# 终端输入:python test.py -f aaa -q bbb
3 参数介绍
action 解析选项时执行的动作:
'store'——选项有一个参数需要读取和保存,如果没有任何显示指定动作,这就是默认动作
'store_const'——选项不带任何参数,但是当遇到选项时,就会保存const关键字参数指定的常量值
'stone_true'——解析选项时,保存的是BOOL值
'store_false'——解析选项时,保存的是BOOL值
'append'——选项有一个参数,解析时被附加到一个列表
'count'——选项不带任何参数,但是保存一个计数器,遇到参数,计数器的值就会增加
'callback'——遇到选项时,调用callback关键字指定的一个回调函数
'help'——解析选项时打印一条帮助消息
'version'——解析选项是获取指定文件版本
callback 指定遇到选项时候调用的回调函数 callback(option,opt_str,value,parse,*rags,**kwarg)
choices 指定所有可能的选项值的字符串列表,当一个选项只有一组有限的值时候使用
const 通过store_const动作保存的常量值
default 默认值None
dest 设置用于保存解析期间选项值的属性名称
help 这个特定选项的帮助文档
metavar 指定打印帮助文本时使用的选项参数的名称
nargs 为需要参数的动作指定选项参数的数量
type 指定选项的类型
4 parser对象常用方法
parser.disable_interspersed_args() #不接受简单选项和位置参数的混合使用 parser.enable_interspersed_args() #选项与位置参数可以混合使用 parser.parse_args() #解析命令行选项,并返回一个元组(options,args)options包含所有选项的值得对象,args是所有余下位置参数的列表 parser.set_defaults() #设置特定选项目的的默认值
5 实战应用
class SysEntrance(object):
"""系统入口"""
def __init__(self):
# 创建OptionParser类对象
self.parser = optparse.OptionParser()
self.add_option()
self.options, self.args = self.parser.parse_args() # 获取格式化获取的信息
def add_option(self):
"""
添加选项
"""
self.parser.add_option("-d", "--dp", dest="path", metavar="PROFILE") # 目录
self.parser.add_option("-t", "--et", dest="type", choices=['1', '2', '3']) # 执行类型
self.parser.add_option("-b", "--build", action="callback", callback=self.vararg_callback, dest="build",
help="build", metavar="PROFILE")
self.parser.add_option("-g", "--debug", action="store_true", dest="debug",
help="build with debug symbols, affects only full build")
def vararg_callback(self, option, opt_str, value, parser):
"""
调用parser.parse_args()触发回调函数, 可以实现对选项参数值的加工
:param option: optparse.Option类
:param opt_str: 选项参数 -b/--build
:param value: //可以留言告诉我是什么值
:param parser: optparse.OptionParser对象
:return:
"""
assert value is None
value = []
for arg in parser.rargs:
# stop on --foo like options
if arg[:2] == "--" and len(arg) > 2:
break
# stop on -a, but not on -3 or -3.0
if arg[:1] == "-" and len(arg) > 1:
break
value.append(arg)
del parser.rargs[:len(value)]
# 重新设置dest对应的值
setattr(parser.values, option.dest, value)
def check_option(self):
"""检查option选项"""
if self.options.path and not os.path.exists(self.options.__dict__.get('path')):
return "选项[path]指定错误 >> 请指定有效的文件路径"
def run(self):
"""根据配置信息进入不同的业务层"""
err = self.check_option()
if err:
return None, err
# 业务层
if self.options.debug:
global DEBUG
DEBUG = True
if self.options.type:
return func(), None
DEBUG = False
def func():
global DEBUG
if DEBUG:
print(1111)
else:
print(2222)
if __name__ == "__main__":
_, err = SysEntrance().run()
print(err)
二、configparser
1 模块介绍
optparse是一个比旧的getopt模块更方便、灵活和强大的解析命令行选项的库