How to create a dict based on such a file?
aspineux
aspineux at gmail.com
Mon Feb 14 02:10:18 EST 2011
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
More information about the Python-list
mailing list