Multiple configuration files with Python ConfigParser
Just to give an example for further detail.
I can create the following two files:
config1.ini
# ** config1.ini **
[shared]
prop_uniue1 = 1
prop_shared = 10
[unique1]
test_unique = 101
and config2.ini
:
# ** config2.ini **
[shared]
prop_uniue2 = 2
prop_shared = 14
[unique2]
test_unique = 102
Then if I run the following I can see how the configs get updated (outputs are shown as comments after the respective print statements):
import ConfigParser
config = ConfigParser.ConfigParser()
config.read(['config1.ini', 'config2.ini'])
print config.sections() # ['shared', 'unique1', 'unique2']
print config.get("shared", "prop_uniue1") # 1
print config.get("shared", "prop_shared") # 14
print config.get("unique1", "test_unique") # 101
print config.get("shared", "prop_uniue2") # 2
print config.get("unique2", "test_unique") # 102
So to summarise it would appear:
- as crasic says the order in which the files are read is determined by the order in which the file names appear in the list given to the read method,
- the keys are overwritten by later files but this is done at the lower option level rather than the higher section level. This means that if you have options that do not occur in later files even if the section does occur then the options from the earlier files will be used.
After getting around to testing it, ConfigParser overwrites the keys with each successive file, the order in which the files are read is determined by the order of the file names in the list passed to ConfigParser.read