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