views:

222

answers:

3

Hello:

I am using ConfigParser to read the runtime configuration of a script.

I would like to have the flexibility of not providing a section name (there are scripts which are simple enough; they don't need a 'section'). ConfigParser will throw the NoSectionError exception, and will not accept the file.

How can I make ConfigParser simply retrieve the (key, value) tuples of a config file without section names? For instance:

key1=val1
key2:val2

I would rather not write to the config file.

A: 

I think you cannot. You can of course build your own.

extraneon
A: 

You could always do a modification with try/except

try:
    # Your code here
except NoSectionError:
    f = open("config.conf", "r")
    settings = {}
    for line in f:
        if ':' in line:
            splitchar = ':'
        elif '=' in line:
            splitchar = '='
        else:
            #do something else
        kv = line.split(splitchar)
        settings[kv[0]] = kv[1]

I think that should do what you want. It's completely untested but I'm pretty sure it'll work for those two cases you provided.

Wayne Werner
This is equivalent as writing my own config parser, and I would need to program all the functionalities of ConfigParser myself (reading multiple lines, make substitutions, etc).
Arrieta
+1  A: 

Alex Martelli provided a solution for using ConfigParser to parse .properties files (which are apparently section-less config files).

His solution is a file-like wrapper that will automagically insert a dummy section heading to satisfy ConfigParser's requirements.

Will McCutchen
+1 because that is exactly what I was about to suggest. Why add all the complexity when all you have to do is just add a section!
jathanism
Excellent suggestion.
Arrieta
@jathanism: there are cases where you want to work with existing config/properties files, which are read by existing Java code and you don't know the risk of modifying those headers
Tshepang