如何计算配置文件中的简单数学表达式

2024-03-28 12:38:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用一个配置文件和一些简单的数学表达式,如加法或减法。
例如:

[section]
a = 10
b = 15
c = a-5
d = b+c

有没有任何方法可以使用ConfigParser模块来实现这一点?我发现了一些在配置文件中使用字符串作为变量的例子,但是如果我使用它,我会得到一个未计算的字符串(我必须在python代码中解析它)。在

如果在ConfigParser中不可能,您有什么推荐的模块吗?在


Tags: 模块方法字符串代码表达式配置文件section数学
3条回答

为什么使用ConfigParser?为什么不只是

在配置.py公司名称:

a = 10
b = 15
c = a-5
d = b+c

在脚本.py公司名称:

^{pr2}$

如果你必须这样做:

在示例.conf公司名称:

[section]
a = 10
b = 15
c = %(a)s+%(b)s
d = %(b)s+%(c)s

在脚本中,您可以:

^{pr2}$

你可以评估这个表达式:

print eval(config.get('section', 'c'))
# 25
print eval(config.get('section', 'd'))
# 40

如果我认为ConfigParser模块类缺少这样一个函数,我认为get()方法应该允许传递一个函数,该函数将对表达式求值:

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

一些项目使用的一种方法是使配置文件成为Python模块。然后简单地导入它(或使用exec)来运行内容。这给了你很大的能量,尽管很明显有一些安全问题取决于你在哪里使用它(“只要把这些线粘贴到你的。什么事文件…)。在

相关问题 更多 >