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)
それはトリックをしました!!