我在 python 2.7.5 中使用 ConfigParser 来解析配置文件。我想插入一些值,但将它们视为整数而不是字符串(即进行计算)。这可能吗?
这是我目前的做法:
global constantValues
config = ConfigParser.ConfigParser()
# use ConfigParser to get values
config.read("filename")
for section in config.sections():
if (section == "INT"):
for option in config.options(section):
constantValues[option] = config.getint(section, option)
elif (section == "BOOL"):
for option in config.options(section):
constantValues[option] = config.getboolean(section, option)
elif (section == "FLOAT"):
for option in config.options(section):
constantValues[option] = config.getfloat(section, option)
else:
for option in config.options(section):
constantValues[option] = config.get(section, option)
constantValues["samp_per_clk"] = int (constantValues["fs"] / constantValues["sys_clk"])
constantValues["samp_per_trig"] = float(constantValues["fs"] / constantValues["sys_clk"] * constantValues["clks_per_enc"])
我想在配置文件中计算“samp_per_clk”和“samp_per_trig”,然后使用configparser读取它。像这样:
samp_per_clk: %(fs) / %(sys_clk)
但我读过的所有内容似乎都说你只能用字符串进行插值。我错过了什么吗?
编辑:根据下面 Paul Woolcock 的回答以及对这个问题的回答,我添加了以下包装类:
class myConfigParser(object):
def __init__(self, origobj):
self.myobj = origobj
def getFormula(self, section, option):
retString = self.get(section, option)
return eval(retString)
def __getattr__(self, attr):
return getattr(self.myobj, attr)
那成功了!