因此,我正在考虑让自己(当然还有任何愿意使用它的人)在Python中为Pygame创建一个小的样板程序库。我想要一个系统,其中的应用程序设置是提供了一个yaml文件。
所以我在想,如果这个库提供一个默认的yaml树,并将它与用户提供的yaml树合并在一起,那将是很有用的。出于可用性的考虑,我想知道是否有任何人可以预测一个例程,其中:
在用户提供的yaml与默认yaml重叠的树中,用户提供的分支将替换库提供的分支。
在用户提供的yaml不与默认树重叠的任何情况下,默认树仍然存在。
由用户提供的yaml提供的树中的任何多余分支都会被附加。
我知道这个解释很冗长,因为它可能很清楚我要求的是什么。我想知道免费获得是不是有点太多了。
发布于 2009-05-05 03:46:18
您可以使用PyYAML解析文件,然后使用以下函数合并两棵树:
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或者,您可以在调用此函数之前对用户树执行deep-copy。
https://stackoverflow.com/questions/823196
复制相似问题