评估 Python 中动态生成的语句

2023-12-10

我需要动态生成 python 代码并使用 eval() 函数执行它。

我想做的是生成一些“导入”和“赋值”。我的意思是,我需要生成这个字符串来评估它eval(x).

x = """
import testContextSummary
import util.testGroupUtils
testDb = [testContextSummary.TestContextSummary, 
          testGroupUtils.testGroupUtils.TestGroupUtils]
""" # x is automatically generated
eval(x)
... use testDb ...

我尝试使用此代码,但 eval() 返回错误无法识别import,所以我尝试了这段代码。

x = """
testContextSummary = __import__("testContextSummary")
testGroupUtils = __import__("util.testGroupUtils")
testDb = [testContextSummary.TestContextSummary, 
          testGroupUtils.testGroupUtils.TestGroupUtils]
""" # x is automatically generated

eval(x) # error

我再次收到不允许赋值语句的错误。

有没有办法执行动态生成的Python脚本,并使用评估结果?


你要exec代替eval.

>>> s = "x = 2"
>>> exec s
>>> x
2

当然,请不要使用exec在不受信任的字符串上...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

评估 Python 中动态生成的语句 的相关文章

随机推荐