Чтение из ini переведено на configparser

master3.4
Mike Hiretsky 10 years ago
parent a3070bc991
commit 5a5fcd9c4a

@ -30,6 +30,7 @@ from itertools import *
import operator
import traceback
from types import StringTypes
import configparser
def addStdConfig(fileLst,prefix='/'):
stdPath = path.join(prefix,
@ -796,18 +797,20 @@ class SimpleDataVars:
Read variable values from ini files.
Return False if ini file is invalid.
"""
config = configparser.ConfigParser(strict=False)
if path.isdir(iniFile):
config = cl_template.iniParser(
text=reduce(lambda x, y: x + readFile(y),
addStdConfig(
config.read(addStdConfig(
searchProfile(iniFile, 'calculate.env'),
prefix=self.systemRoot), ""))
prefix=self.systemRoot))
else:
config = cl_template.iniParser(iniFile)
config.read(iniFile)
importVars = {}
for varname, varobj in self.allVars.items():
if varobj.section not in importVars:
importVars[varobj.section] = config.getAreaVars(varobj.section)
importVars[varobj.section] = \
(dict(config.items(varobj.section, raw=True))
if config.has_section(varobj.section)
else {})
if not varname in self.cache:
val = self.unserialize(varobj.type or "string",
importVars[varobj.section].get(varname,'').encode('utf-8'))
@ -998,9 +1001,11 @@ class DataVars(SimpleDataVars):
retVal = ""
for iniFile in calculateIniFiles:
if path.exists(iniFile):
config = cl_template.iniParser(iniFile)
data = config.getVar(section,varname,checkExistVar=True)
if data is False:
config = configparser.ConfigParser(strict=False)
config.read(iniFile)
try:
data = config[section][varname]
except KeyError:
return False
existsVar, value = data
if existsVar:
@ -1016,20 +1021,14 @@ class DataVars(SimpleDataVars):
section2 : { variable : value }
"""
optionsInfo = {}
config = cl_template.iniParser(envFile)
allsect = config.getAllSectionNames()
if allsect:
config = configparser.ConfigParser(strict=False)
config.read(envFile)
allsect = config.sections()
for section in allsect:
allvars = config.getAreaVars(section)
if allvars == False:
return False
# options (dict of variables:value)
options = {}
for varName, value in allvars.items():
varName = varName.encode("UTF-8")
value=convertStrListDict(value.encode("UTF-8"))
options[varName] = value
# if options exists add section to return dict as key section
options = {
k.encode('utf-8'):convertStrListDict(v.encode('utf-8'))
for k,v in config.items(section, raw=True)
}
if options:
optionsInfo[section] = options
return optionsInfo
@ -1056,24 +1055,20 @@ class DataVars(SimpleDataVars):
for iniName,iniFile in profiles+\
self.Get('main.cl_env_data'):
if path.exists(iniFile) or iniName == 'profile':
config = configparser.ConfigParser(strict=False)
if iniName == 'profile':
config = cl_template.iniParser(
text=reduce(lambda x,y:x+readFile(y),
addStdConfig(
searchProfile(iniFile,'calculate.env')),""))
config.read(addStdConfig(
searchProfile(iniFile,'calculate.env')))
else:
config = cl_template.iniParser(iniFile)
iniSections = config.getAllSectionNames()
config.read(iniFile)
iniSections = config.sections()
if not iniSections:
continue
if onlySection:
iniSections = tuple(set(iniSections)&
set([unicode(onlySection)]))
for section in iniSections:
importVars = config.getAreaVars(section)
if self.allVars == False:
continue
for key,value in importVars.items():
for key,value in config.items(section, raw=True):
key = _toUNICODE(key).encode('utf-8')
self.iniCache[key] = {'value':value,
'section':section}

Loading…
Cancel
Save