如何使用configparser从配置文件中读取大写字母的密钥?

时间:2016-09-07 13:43:56

标签: python python-3.x configparser

当使用python的configparser包读出配置文件时,所有键名都是小写字符串。有人知道如何读取保留大写和大写单词的字符串吗?

例如:

$cat config.cfg 
[DEFAULT]
Key_1 = SomeWord
KEY_2 = Another Word

$ python3
>>> from configparser import ConfigParser
>>> cf = ConfigParser()
>>> cf.read('./config.cfg')
['./config.cfg']
>>> print(cf.defaults())
OrderedDict([('key_1', 'SomeWord'), ('key_2', 'Another Word')])

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

是的,在读/写操作期间,所有键都会自动转换为小写。这在the Quick Start section of the configparser docs的最后一句中提到。

如果没有此效果,您可以设置解析器“optionxform(可调用),只需返回option而不是将其转换为小写:

>>> from configparser import ConfigParser
>>> c = ConfigParser()
>>> c.optionxform = lambda option: option
>>> c.read('./config.cfg')
['./config.cfg']

现在按键被定义时会保留:

>>> c.defaults()
OrderedDict([('Key_1', 'SomeWord'), ('KEY_2', 'Another Word')])

当然,您可以根据自己的喜好自定义此项,例如,如果您希望所有键都为大写,则可以在optionxform中设置:

>>> cf = ConfigParser()
>>> cf.optionxform = lambda option: option.upper()
>>> cf.read('./config.cfg')
['./config.cfg']
>>> cf.defaults()
OrderedDict([('KEY_1', 'SomeWord'), ('KEY_2', 'Another Word')])