通常情况下,我们会这样解析配置文件:
confiig = ConfigParser.ConfigParser()
config.read('xxx.ini') #这个read表示对某个文件用读打开,
把文件内容读进结构
config.set(section, option, value) #修改
config.write(open('xxx.ini', 'w') #写
可以看到,这个read和write没有任何联系
我在使用ConfigParser过程,发现他对option的大小写不敏感,全部变成小写,
这样如果你在修改之后,重写,会发现本来是大写的option变成小写了。
问题出在
def optionxform(self, optionstr):
return optionstr.lower()
可以自己写一个NewConfigParser,继承ConfigParser,重载函数 optionxform
import configparser
class NewConfigParser(configparser.ConfigParser):
def optionxform(self, optionstr):
return optionstr
def read_config_again():
rootdir = r"./config/xxx.ini"
config=NewConfigParser()
try:
config.read(rootdir, encoding='utf-8')
secs = config.sections()
print("{}".format(secs))
opts = config.options("API")#[1:]
print("{}".format(opts))
kvs = config.items("API")#[1:]
print("{}".format(kvs))
except configparser.DuplicateOptionError as doe:
print("{} 有问题,需要查看 {}".format(doe, rootdir))
pass
if __name__ == '__main__':
read_config_again()