所以我正在考虑用 Python 为 Pygame 制作一个小样板库(当然还有任何愿意使用它的人)。我想要一个通过 yaml 文件提供应用程序设置的系统。
因此,我认为如果库提供默认的 yaml 树并将其与用户提供的树合并,将会很有用。为了可用性起见,我想知道是否有人可以预测一个例程:
在任何情况下,在用户提供的 yaml 与默认值重叠的树中,用户提供的分支都会替换库提供的分支。
在用户提供的 yaml 不与默认树重叠的任何情况下,默认树都会保留。
用户提供的 yaml 提供的树中任何多余的分支都会被附加。
我知道这个解释很冗长,因为它可能很清楚我的要求。我想知道免费获得是否有点多。
你可以使用PyYAML http://pyyaml.org/用于解析文件,然后使用以下函数来合并两棵树:
def merge(user, default):
if isinstance(user,dict) and isinstance(default,dict):
for k,v in default.iteritems():
if k not in user:
user[k] = v
else:
user[k] = merge(user[k],v)
return user
或者,你可以做一个深拷贝 http://docs.python.org/library/copy.html调用此函数之前的用户树。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)