section with in a section config file and reading that config file

Tarek Ziadé tarek at ziade.org
Fri Oct 19 17:59:03 EDT 2012


On 10/19/12 11:29 PM, Steven D'Aprano wrote:
> On Fri, 19 Oct 2012 12:09:53 +0200, Tarek Ziadé wrote:
>
>> On 10/19/12 11:51 AM, kampy wrote:
>>> hi all,
>>> my requirement is to have section with in a section in config
>>> parameters ex:
>>> [AAA]
>>>       [BBB]
>>>        a=1
>>>        b=1
>>>       [CCC]
>>>        a=1
>>>        b=2
>>> Any one help me in  understanding how to make sure that config file to
>>> have a structure like this and reading with the config parser
>> a configuration file is a flat sequences of sections, you cannot do this
> That is incorrect.
uh ?
>
> A configuration file is a file containing configuration data. That is all.
yeah,
organized in [sections]. a flat list of sections.

>
> "Configuration file" says nothing about the format of the file. It could
> be a Unix .rc file, a Windows .ini file with no section header, a
> Windows .ini file with section headers, a Python source code file, YAML,
> JSON, XML, a PLIST file, or any other format you decide to use.
>
> If the Original Poster wants an ini file with nested sections, he can
> have an ini file with nested sections.

That's not an ini file anymore. That's a Foord-file :)

There's no notion of nested sections in ini configuration files, since 
there's no syntax marker to do the nesting

see https://en.wikipedia.org/wiki/INI_file#Sections

>
> There is no support for nested sections in the ConfigParser module, but
> the ConfigObj third-party module supports it. Otherwise the OP could
> write his own code, possibly by subclassing from ConfigParser.
This is not a ini configuration file anymore, since it introduces ad-hoc 
markers added that
are not recognized by other parsers.

Which is fine.

But instead of using an exotic, ad-hoc, look-alike ini file,
I strongly recommend using a standard that has native nested elements 
(json or yaml)

Cheers
Tarek




More information about the Python-list mailing list