阅读目录
一、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模块更方便、灵活和强大的解析命令行选项的库