あなたはこのような何かを行うことができなければならない場合:
あるexample.conf:
import ConfigParser
config = ConfigParser.SafeConfigParser()
config.readfp(open('example.conf'))
print config.get('section', 'a')
# '10'
print config.get('section', 'b')
# '15'
print config.get('section', 'c')
# '10+15'
print config.get('section', 'd')
# '15+10+15'
を、あなたが式をevalのことができます。
[section]
a = 10
b = 15
c = %(a)s+%(b)s
d = %(b)s+%(c)s
とスクリプトにあなたが行うことができます
:
print eval(config.get('section', 'c'))
# 25
print eval(config.get('section', 'd'))
# 40
私はConfigParserモジュールクラスは、このような機能が欠けていると思い示唆することができる場合、私はget()方法は、式をevalします機能を渡すことができるようにすべきだと思う:
def my_get(self, section, option, eval_func=None):
value = self.get(section, option)
return eval_func(value) if eval_func else value
setattr(ConfigParser.SafeConfigParser, 'my_get', my_get)
print config.my_get('section', 'c', eval)
# 25
# Method like getint() and getfloat() can just be writing like this:
print config.my_get('section', 'a', int)
# 10
計算何の設定ファイルではありませんのためです。 – SilentGhost
@SilentGhost:あまりにも多くの処理を行うべきではありませんが、「xはyよりも大きく」、yを変更できるという状況があります。これは、x_diffを指定して優先ルールをソートするなどの方法よりもはるかに簡単です。 –
comp.lang.python [ConfigParserShootout](http://www.red-dove.com/config-doc)のVinay Sajipの['config'モジュール](http:// wiki)を使うことができます。 python.org/moin/ConfigParserShootout)を使用して、設定ファイルで[式の使用](http://www.red-dove.com/config-doc/#using-expressions)を許可します。また、[pyparsing - Examples](http:// pyparsing)のSteven Siewの[SimpleCalc.py](http://pyparsing.wikispaces.com/file/view/SimpleCalc.py)を利用すれば、 wikispaces.com/Examples)ページ。 – martineau