chinapnr / fishbase

自主开发、整理的一套 Python 基础函数库,涵盖 system 系统增强包、logger 日志记录增强包、file 文件处理增强包、 date 日期处理函数包、data 数据信息处理函数包、csv 处理增强函数包、crypt 加密/编码增强包等,可减少程序开发工作量、降低引用复杂度。
MIT License
94 stars 29 forks source link

fish_common, conf_as_dict 配置项支持大小写 #222

Closed mindjun closed 5 years ago

mindjun commented 5 years ago

背景

步骤

举例

class MyConfigParser(ConfigParser.ConfigParser):  
    def __init__(self,defaults=None):  
        ConfigParser.ConfigParser.__init__(self,defaults=None)  
    def optionxform(self, optionstr):  
        return optionstr

def conf_as_dict(conf_filename, encoding=None,case_sensitive=False):
    flag = False

    # 检查文件是否存在
    if not pathlib.Path(conf_filename).is_file():
        return flag,

    # 判断是否对大小写敏感
    if not case_sensitive:
        cf = configparser.ConfigParser()
    else:
        cf = MyConfigParser()

    # 读入 config 文件
    try:
        if sys.version > '3':
            cf.read(conf_filename, encoding=encoding)
        else:
            cf.read(conf_filename)
    except:
        flag = False
        return flag,

    d = OrderedDict(cf._sections)
    for k in d:
        d[k] = OrderedDict(cf._defaults, **d[k])
        d[k].pop('__name__', None)

    flag = True

    # 计算有多少 key
    count = len(d.keys())

    return flag, d, count