通常情况下,我们会这样解析配置文件:
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()