I found one interesting observation. I had written one config file read program as,
import ConfigParser class ConfReader(object): ConfMap = dict() def __init__(self): self.config = ConfigParser.ConfigParser() self.config.read('./Config.ini') self.__loadConfigMap() def __loadConfigMap(self): for sec in self.config.sections(): for key,value in self.config.items(sec): print 'key = ', key, 'Value = ', value keyDict = str(sec) + '_' + str(key) print 'keyDict = ' + keyDict self.ConfMap[keyDict] = value def getValue(self, key): value = '' try: print ' Key = ', key value = self.ConfMap[key] except KeyError as KE: print 'Key', KE , ' didn\'t found in configuration.' return value class MyConfReader(object): objConfReader = ConfReader() def main(): print MyConfReader().objConfReader.getValue('DB2.poolsize') print MyConfReader().objConfReader.getValue('DB_NAME') if __name__=='__main__': main()
And my Config.ini file looks like,
[DB] HOST_NAME=localhost NAME=temp USER_NAME=postgres PASSWORD=mandy
The __loadConfigMap() works just fine. But while reading the key and values, it is making the keys lower case. I didn't understand the reason. Can any one please explain why it is so?
ConfigParser.ConfigParser()
is a subclass of ConfigParser.RawConfigParser()
, which is documented to behave this way:
All option names are passed through the
optionxform()
method. Its default implementation converts option names to lower case.
That's because this module parses Windows INI files which are expected to be parsed case-insensitively.
You can disable this behaviour by replacing the RawConfigParser.optionxform()
function:
self.config = ConfigParser.ConfigParser() self.config.optionxform = str
str
passes through the options unchanged.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With