如何在ConfigParser中保留大小写?
我尝试使用Python的ConfigParser模块来保存设置。对我的应用来说,保持每个部分名称的大小写非常重要。文档提到将str()传递给ConfigParser.optionxform()可以实现这个目的,但对我来说并没有效果。所有的名称都是小写的。我是不是漏掉了什么?
<~/.myrc contents>
[rules]
Monkey = foo
Ferret = baz
这是我得到的Python伪代码:
import ConfigParser,os
def get_config():
config = ConfigParser.ConfigParser()
config.optionxform(str())
try:
config.read(os.path.expanduser('~/.myrc'))
return config
except Exception, e:
log.error(e)
c = get_config()
print c.options('rules')
[('monkey', 'foo'), ('ferret', 'baz')]
5 个回答
17
在你的代码中添加:
config.optionxform = lambda option: option # preserve case for letters
66
对我来说,在创建对象后立刻设置 optionxform
是有效的。
config = ConfigParser.RawConfigParser()
config.optionxform = str
136
这段文档有点让人摸不着头脑。他们的意思是:
import ConfigParser, os
def get_config():
config = ConfigParser.ConfigParser()
config.optionxform=str
try:
config.read(os.path.expanduser('~/.myrc'))
return config
except Exception, e:
log.error(e)
c = get_config()
print c.options('rules')
也就是说,要重写optionxform,而不是去调用它;重写可以在子类中进行,也可以在实例中进行。在重写的时候,要把它设置为一个函数(而不是调用函数后的结果)。
我现在已经把这个问题报告为一个bug,并且这个问题已经被修复了。