我建议子类化ConfigParser.ConfigParser(或SafeConfigParser,& c)以安全访问“受保护”属性(以单个下划线开头的名称 – “私有”将是以两个下划线开头的名称,即使在子类中也不被访问。 。):
import ConfigParser
class MyParser(ConfigParser.ConfigParser):
def as_dict(self):
d = dict(self._sections)
for k in d:
d[k] = dict(self._defaults, **d[k])
d[k].pop('__name__', None)
return d
这模拟了配置解析器的通常逻辑,并保证在所有版本的Python中都有一个ConfigParser.py模块(高达2.7,这是最后一个2. *系列 – 知道将来没有未来Python 2.any版本是如何保证兼容性的;-)。
如果您需要支持未来的Python 3. *版本(高达3.1,可能即将到来的3.2,应该是好的,只是将模块重命名为全小写configparser而不是当然)它可能需要一些注意/调整几年下来路,但我不会期待任何重大的事情。