如果您想要简单地合并同名的部分(最新的部分获胜),只需将strict=False
选项传递给构造函数(在 Python 3.2 中添加)。当重复的部分被合并时,您可以有效地获得dict.update()
行为。
Config = configparser.ConfigParser(strict=False)
但是,从 OP 的示例数据中可以清楚地看出,同名部分需要分开保存,以避免数据丢失。ConfigParser
将它读取的部分存储在字典中,因此它无法处理具有相同名称的多个部分。幸运的是,构造函数接受一个dict_type
参数,允许您指定一个不同的类字典对象。您可以使用它来支持同名部分。这是一个粗略的解决方案,它通过在以前看到部分名称时附加一个唯一编号来破坏部分名称。
from collections import OrderedDict
class multidict(OrderedDict):
_unique = 0 # class variable
def __setitem__(self, key, val):
if isinstance(val, dict):
self._unique += 1
key += str(self._unique)
OrderedDict.__setitem__(self, key, val)
Config = configparser.ConfigParser(defaults=None, dict_type=multidict, strict=False)
通过一些工作,您应该能够构建一个更清洁的解决方案。