通常情況下,我們會這樣解析配置文件:
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()