Closed mindjun closed 5 years ago
conf_as_dict
configparser
key
MyConfigparser
optionxform
case_sensitive
False
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
背景
conf_as_dict
使用configparser
读取配置文件,configparser
默认会将配置中key
的值转换为小写conf_as_dict
就约束了项目的配置项必须为小写步骤
MyConfigparser
继承重写configparser
的optionxform
方法conf_as_dict
继承自MyConfigparser
conf_as_dict
提供可选参数,case_sensitive
,默认为False
,兼容原来的函数举例