问题:用Python将ini文件中的所有内容读入字典

通常,我编写如下代码以获取变量中的特定项目,如下所示

try:
    config = ConfigParser.ConfigParser()
    config.read(self.iniPathName)
except ConfigParser.MissingSectionHeaderError, e:
    raise WrongIniFormatError(`e`)

try:
    self.makeDB = config.get("DB","makeDB")
except ConfigParser.NoOptionError:
    self.makeDB = 0

有没有办法读取python字典中的所有内容?

例如

[一个]

xu003d1

yu003d2

zu003d3

[乙]

xu003d1

yu003d2

zu003d3

被写入

val["A"]["x"] u003d 1

...

val["B"]["z"] u003d 3

解答

我建议子类化ConfigParser.ConfigParser(或SafeConfigParser,&c)以安全地访问“受保护”属性(以单个下划线开头的名称——“私有”将以 two 下划线开头的名称,即使在子类中也不能访问......):

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

这模拟了配置解析器的通常逻辑,并保证在所有有ConfigParser.py模块的 Python 版本中工作(最高 2.7,这是2.*系列的最后一个 - 知道未来不会有 Python 2.any版本是_保证_的兼容性;-)。

如果您需要支持未来的 Python3.*版本(最高 3.1 并且可能即将推出的 3.2 应该没问题,只需将模块重命名为全小写configparser而不是当然)它可能需要几年后的一些注意/调整,但我不会期待任何重大的事情。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐