On Feb 14, 6:10*pm, aspineux <aspin...@gmail.com> wrote:
> On 14 fév, 06:47, Wang Coeus <wangco...@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.
|