[CentralOH] List in config file

William McVey wam at cisco.com
Mon Aug 30 23:36:40 CEST 2010


On Mon, 2010-08-30 at 16:54 -0400, Tony Zhu wrote:
> I need to store some tasks configuration in a config file. 
<snip>
> 
> But I tried the "ConfigParser" package in python, it does not support
> such lists.
> I thought about xml. Of course it can store such data. But the config
> file is supposed to be edited by hand. xml is not so friendly to a
> notepad. I also checked YAML, plists, json. All of them seem to be too
> complex for my simple requirement.
> 

How are you defining "complex". I would tend to choose YAML for this
kind of config file, and although yaml has support for a lot of
constructs, using the yaml to parse simple (or complex) config files
really isn't complex itself. For instance:


        # Config file demo: foo.yaml
        #
        tasks:
          task1:
            - tool1
            - tool2
        
          task2:                     # another way to do it
            tools: [tool2, tool3]

And loading the config:
        >>> import yaml
        >>> f = open("/tmp/foo.yaml")
        >>> doc = yaml.load(f)
        >>> doc['tasks']['task1']
        ['tool1', 'tool2']
        >>> doc['tasks']['task2']['tools']
        ['tool2', 'tool3']
        
In fact, load() simply builds a structured dictionary that you can
process however you wish:

        >>> doc
        {'tasks': {'task1': ['tool1', 'tool2'], 'task2': {'tools':
        ['tool2', 'tool3']}}}

Hope this helps.

  -- William



More information about the CentralOH mailing list