python ConfigParser读取配置文件大小写问题

Python 2016-07-14

起步

被打开的配置文件option都会被重置为小写,写回文件后发现没法保留配置文件大小写,也就是说都会被改为小写。

原因

原因就出在ConfigParser中有这么一段:

def optionxform(self, optionstr):
    return optionstr.lower()

解决方式

自建类,继承ConfigParser,重写方法

这种方法比较适合还未使用ConfigParser的情况:

import ConfigParser  
class CaseConfigParser(ConfigParser.ConfigParser):  
    def __init__(self,defaults=None):  
        ConfigParser.ConfigParser.__init__(self,defaults=None)  
    def optionxform(self, optionstr):  
        return optionstr 

修改源代码

这种方式其实并不推荐,因为无法保证用户或者运行服务器上的代码和你的一样,虽然处理起来十分简单:/usr/lib/python2.7/ConfigParser.pydef optionxform(self, optionstr):函数中去掉.lower()即可。

安全方案

我们import ConfigParser用的可能不止ConfigParser.ConfigParser()这个类,还有其他形如ConfigParser, SafeConfigParser, RawConfigParser,他们通过ConfigParser.RawConfigParser(),这个时候方法一就不是很好用了,方法二又存在弊端。 好在这个python模块不存在依赖,把该文件拷出来,放在自己项目文件夹里面。之后同样需要去掉.lower()。这样摆脱模块,是“自己”写的文件。

import ConfigParser

改为:

import xxxx.ConfigParser as ConfigParser

本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

赏个馒头吧