python 默认配置文件_python 读取默认配置文件和用户配置文件 configs

优先从configs_default中读取配置,但是configs_override中的配置可以override它

import configs_default

#import configs_override #不一定有这个文件 得换成 try except

configs = configs_default.configs

def chain(*dicts): #自己实现一个dict版本的chain

for d in dicts:

for k,v in d.items():

yield (k,v)

def merge_configs(c1,c2):

results={}

for k,v in chain(c1,c2):

if k in results:

results[k] = merge_configs(results[k],v) if isinstance(v,dict) else v #Iterable不行 str也是Iterable

else:

results[k] = v # 原来没有 直接加

return results

class Dict(dict):

'''

Simple dict but support access as x.y style.

'''

def __init__(self, names=(), values=(), **kw):#可以传入names=('id','name') values=(123,'Tom')

super(Dict, self).__init__(**kw)

for k, v in zip(names, values):# zip 打包成一对对的tuple组成的list [('id',123),('name','Tom')]

self[k] = v

def __getattr__(self, key):

try:

return self[key]

except KeyError:

raise AttributeError(r"'Dict' object has no attribute '%s'" % key)

def __setattr__(self, key, value):

self[key] = value

def toDict(d):

results = Dict()

for k,v in d.items():

results[k] = toDict(v) if isinstance(v,dict) else v

return results

try:

import configs_override

configs = merge_configs(configs,configs_override.configs)

except BaseException as e:

pass

configs = toDict(configs)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值