Python常用模块

夙愿已清 提交于 2019-12-04 13:26:19

阅读目录

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

三、logging

1 日志级别

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!