Read all the contents in ini file into dictionary with Python
Question: Normally, I code as follows for getting a particular item in a variable as
follows

    
    
    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
    

Is there any way to read all the contents in a python dictionary?

For example

    
    
    [A]
    x=1
    y=2
    z=3
    [B]
    x=1
    y=2
    z=3
    

is written into

    
    
    val["A"]["x"] = 1
    ...
    val["B"]["z"] = 3
    


Answer: I suggest subclassing `ConfigParser.ConfigParser` (or `SafeConfigParser`, &c)
to safely access the "protected" attributes (names starting with single
underscore -- "private" would be names starting with _two_ underscores, not to
be accessed even in subclasses...):

    
    
    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
    

This emulates the usual logic of config parsers, and is guaranteed to work in
all versions of Python where there's a `ConfigParser.py` module (up to 2.7,
which is the last of the `2.*` series -- knowing that there will be no future
Python 2.any versions is how compatibility can be _guaranteed_ ;-).

If you need to support future Python `3.*` versions (up to 3.1 and probably
the soon forthcoming 3.2 it should be fine, just renaming the module to all-
lowercase `configparser` instead of course) it may need some attention/tweaks
a few years down the road, but I wouldn't expect anything major.

