0

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)

それはトリックをしました!!

4

1 に答える 1

0

そのままでは、いいえ、 ではこれを行うことはできませんConfigParser。ただし、単なるクラスであり、クラスはオーバーライド可能です:) ConfigParser.ConfigParser class FormulaConfigParser(ConfigParser)この動作を実装するためにオーバーライドしたり、メソッドConfigParser.get()を追加したりすることができない理由がわかりませんか?.getformula()

于 2013-05-29T16:11:04.273 に答える