最近写程序读取ini文件时,发现使用python的ConfigParser模块,在读取ini文件时,会自动将所有读取出来的大写字母转换为小写字母,如"Abc"读取之后会变成"abc",我不太清楚为啥这个模块要把读取的字母全部转换为小写,我只知道这会是我的程序不能正常运行,所以,我决定查找一下原因。
首先先定位ConfigParser模块的位置,使用help命令找到了在python/lib/目录下。
在源码中查找,最后发现了在RawConfigParser类中一个函数返回使用了lower()的数据。
def optionxform(self,optionstr):
return optionstr.lower()
ConfigParser类继承自RawConfigParser,所以它也继承了此函数,所以读取的所有数据都变成了小写。
我不打算改源码,所以选择了继承类并修改函数这条道路。
class ConfigParserUper(ConfigParser):
def optionxform(self,optionstr):
return optionstr
这样,我使用我自己的类就可以实现支持大小写混合的功能了。