每篇一句:
This path has been placed before you. The choice is yours alone. ——《星球大战》
正文:
最近在使用ConfigParser模块时,发现一个问题:
在写入文件时,无论原字符是大写还是小写,ConfigParser option 总是把它转换为小写字符,然后再写入。
查阅资料后发现是ConfigParser中optionxform()函数的问题:
def optionxform(self, optionstr):
return optionstr.lower() #转化为了小写字符
解决方案:
- 第一种解决法案是改源码,直接将def optionxform() 函数中‘.lower()’去掉:
def optionxform(self, optionstr):
return optionstr
此种解决方案的不足之处是只能在本机生效,换台机器就会出问题。
- 第二种解决方案是自己写一个MyConfigParser,继承自ConfigParser,重写一下optionxform()方法:
# coding=utf-8
import ConfigParser
class MyConfigParser(ConfigParser.ConfigParser):
def __init__(self, defaults=None):
ConfigParser.ConfigParser.__init__(self, defaults=defaults)
def optionxform(self, optionstr):
return optionstr
使用时使用自己写的MyConfigParser:
conf = MyConfigParser()
conf.read("************")
推荐使用第二种方案。