ConfigParser读取大写字母,并使其成为小写字母

我发现了一个有趣的观察。 我写了一个configuration文件读取程序,

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() 

而我的Config.ini文件看起来像,

 [DB] HOST_NAME=localhost NAME=temp USER_NAME=postgres PASSWORD=mandy 

__loadConfigMap()工作得很好。 但是,在阅读关键和价值观的同时,使关键字成为小写字母。 我不明白原因。 任何人都可以解释为什么是这样吗?

ConfigParser.ConfigParser()ConfigParser.ConfigParser()的一个子类,logging了这种行为:

所有选项名称都通过optionxform()方法传递。 它的默认实现将选项名称转换为小写。

那是因为这个模块分析了Windows INI文件,这些文件是大小写不敏感的。

您可以通过replaceRawConfigParser.optionxform()函数来禁用此行为:

 self.config = ConfigParser.ConfigParser() self.config.optionxform = str 

str不变地通过选项。