How to create a dict based on such a file?

Martin De Kauwe mdekauwe at gmail.com
Mon Feb 14 05:10:41 EST 2011


On Feb 14, 6:10 pm, aspineux <aspin... at gmail.com> wrote:
> On 14 fév, 06:47, Wang Coeus <wangco... at gmail.com> wrote:
>
> > Hi all,
> > I am new to python. Currently I encountered a problem, please help me to
> > solve this. Thanks in advance!
> > I have a file like below:
>
> ConfigParser Library does exacly what you want but with .ini file
> format
> [block1]
> key1=value1
> key2=value2
> ...
>
> Can you change the format of your file ? If so
>
> import ConfigParser
> config=ConfigParser.RawConfigParser(config_default)
> try:
>     config.readfp(open(filename, 'r'))
> except Exception, e:
>     logging.error('error reading configuration file %s: %s', filename,
> e)
>     sys.exit(1)
>
> def func(config, key1):
>     result={}
>     for section in config.sections():
>         if config.has_option(section, key1):
>             result[section]=config.get(section, key1)
>     return result
>
> If not, you need to parse youre file, and the some question :
> How or what generate this file, is it always the same format ? Could
> it chnage, for exemple for
>
> block1 { key1=value1 key2=value2 }
>
> or at least
>
> block1 {
>
> key1=value1
> key2=value2
>
> }
>
> Is-it big, too big to keep in memory ?
>
>
>
> > ++++++++++++++++++++++++++++++++++++++
> > block1
> > {
> >   key1=value1
> >   key2=value2
> >   key3=value3}
>
> > block2
> > {
> >   key1=value4
> >   key2=value5
> >   key4=value6}
>
> > ...
> > blockn
> > {
> >   key1=value7
> >   key2=value8
> >   keyn=valuen}
>
> > +++++++++++++++++++++++++++++++++++++++
> > Different block may have different keys and even same key in different
> > blocks may have different values.
>
> > Now I want to get a function, which like this:
> > func(key)
> > and it will return a dictionary as below:
> > func(key1) = [block1:value1,block2:value4,...,blockn:value7]
> > and if one block has no "key1" parameter, it will not include in this
> > dict.
>
> > Thanks a lot!
> > --
> > Coeus
> > In the middle of every difficulty lies opportunity.
> >                 -- Albert Einstein

configobj is even better, very similar usage.



More information about the Python-list mailing list