(beginner question) ConfigParser nuances

Chris Rebert clp2 at rebertia.com
Mon May 2 18:25:16 EDT 2011


On Mon, May 2, 2011 at 3:04 PM, Unknown Moss <unknownmoss at gmail.com> wrote:
> Hi - Beginner question here. I'm working with ConfigParser. I'd like
> to take a multiline variable and convert it directly to an array.
> Seems like a common  problem, but I don't see how I can do it without
> doing a little parsing in my own code. Here's what I'm doing ...
>
>>>> import ConfigParser
>>>> import io
>>>> sample = """
> ... [Example]
> ... fruit = apple
> ...     orange
> ...     pear
> ... """
>>>> config = ConfigParser.RawConfigParser()
>>>> config.readfp(io.BytesIO(sample))
>>>> config.get("Example", "fruit")
> 'apple\norange\npear'
>>>> temp = config.get("Example", "fruit")
>>>> temp.split()
> ['apple', 'orange', 'pear']
>
> I'm thinking there's a way to avoid this intermediate temp.split()
> step. Is there not a way to move a multiline value straight into an
> array using ConfigParser?

Nope, there is not. I think some might instead use several numbered
options to similar effect:

# config file
[Example]
fruit1: apple
fruit2: orange
fruit3: pear

# Python
from itertools import count
fruits = []
names = ("fruit" + str(i) for i in count(1))
for name in names:
    if not config.has_option("Example", name):
        break
    fruits.append(config.get("Example", name))


Cheers,
Chris
--
http://rebertia.com



More information about the Python-list mailing list