2.3.5 Sections

Configuration files may be organized in sections with each section containing option/value pairs. The keys argument of the add_option() method can be used to select which section to obtain the option setting from.

For example:

# file: sections.ini
[DEFAULT]
# all devices use the same driver type
driver = ethernet

[DEV0]
# path to device #0
path = 192.168.0.0

[DEV1]
# path to device #1
path = 192.168.0.1

And script:

# file: sections.py
import cfgparse
c = cfgparse.ConfigParser()
c.add_option('driver', dest='driver0', keys='DEV0')
c.add_option('driver', dest='driver1', keys='DEV1')
c.add_option('path', dest='path0', keys='DEV0')
c.add_option('path', dest='path1', keys='DEV1')
c.add_file('sections.ini')
opts = c.parse()
print "DEV0:",opts.driver0,opts.path0
print "DEV1:",opts.driver1,opts.path1

Results in:

$ python sections.py
DEV0: ethernet 192.168.0.0
DEV1: ethernet 192.168.0.1

The [DEFAULT] section is special. If an option setting cannot be found in a section specified by keys, the option is obtained from the [DEFAULT] section. This section is also utilized if keys is not specified. Note, use of [DEFAULT] is optional. If omitted, option/setting pairs specified before any section declarations are considered part of the [DEFAULT] section. Although not advisable, multiple sections of the same name may exist and are treated as one section without error.