"""
14/04/29修改, 换了下结构=。=。。。
之前是的结构是{section:[{key:value}, ...], ...}之前一定是脑子抽了才这样写= =
改成了{section:{key:value, key:value, ...}, ...}
"""
#coding=utf-8
import sys;
import os;
import gc;
class IniEngine():
def __init__(self, fileName = "", dict = {}):
self._dict = {};
if(fileName != ""):
self.readFromFile(fileName);
elif(dict != {}):
self.setDict(dict);
def readFromFile(self, fileName):
try:
file = open(fileName, "r");
except:
raise Exception("无法读取文件!");
section = "";
gc.disable();
for line in file:
line = line.strip("\n").strip().split(";")[0]; #处理掉空格,回车,注释
if(line.startswith("[") and line.endswith("]")):
section = line.strip("[").strip("]");
elif(line == ""): #忽略空行
continue;
else:
key, value = line.split("=");
key = key.strip();
value = value.strip();
if(section != ""):
self.setItem(section, key, value);
else:
raise Exception("解析过程中出现了错误, ini文件格式不正确!");
gc.enable();
file.close();
def setSection(self, section):
dict = self.getDict();
if(section not in dict):
dict.update({section:{}});
return dict[section];
def setItem(self, section, key, value):
keyDict = self.setSection(section);
keyDict.update({key:value});
return keyDict;
def getKeys(self, section, default = None):
dict = self.getDict();
if(section in dict):
return dict[section];
return default;
def getValue(self, section, key, default = None):
keyDict = self.getKeys(section);
if(key in keyDict):
return keyDict[key];
return default;
def delSection(self, section):
dict = self.getDict();
if(section in dict):
return dict.pop(section);
return None;
def delKey(self, section, key):
keyDict = self.getKeys(section);
if(key in keyDict):
return keyDict.pop(key);
return None;
def setDict(self, dict):
self._dict = dict;
def getDict(self):
return self._dict;
def writeToFile(self, fileName):
try:
file = open(fileName, "w");
except:
raise Exception("无法打开文件!");
dict = self.getDict();
for section, keyDict in dict.items():
file.write("[{0}]\n".format(section));
for key, value in keyDict.items():
file.write("{0}={1}\n".format(key, value));
file.close();
def main():
ini = IniEngine();
ini.readFromFile(r".\test\1.ini");
print(ini.getDict());
ini.setSection("test77");
ini.setItem("test223", "1", "5");
ini.setItem("test21", "wer", "xc");
ini.setItem("test546", "rs", ",m");
print(ini.getKeys("sec", "sdad"));
ini.delSection("test21");
ini.delKey("test223", "1");
print(ini.getDict());
ini.writeToFile(r".\test\2.ini");
if(__name__ == "__main__"):
main();