为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中评估动态生成的语句

在Python中评估动态生成的语句

慕雪6442864 2021-03-23 12:11:54
我需要动态生成python代码并使用eval()函数执行它。我想做的是生成一些“导入”和“分配值”。我的意思是,我需要生成此字符串以对其进行评估eval(x)。x = """import testContextSummaryimport util.testGroupUtilstestDb = [testContextSummary.TestContextSummary,           testGroupUtils.testGroupUtils.TestGroupUtils]""" # x is automatically generatedeval(x)... use testDb ...我尝试使用此代码,但是eval()返回无法识别的错误import,因此我尝试了此代码。x = """testContextSummary = __import__("testContextSummary")testGroupUtils = __import__("util.testGroupUtils")testDb = [testContextSummary.TestContextSummary,           testGroupUtils.testGroupUtils.TestGroupUtils]""" # x is automatically generatedeval(x) # error我再次遇到错误,不允许执行赋值语句。有什么方法可以执行动态生成的python脚本,并使用评估结果?
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您想要exec而不是eval。


>>> s = "x = 2"

>>> exec s

>>> x

2

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


查看完整回答
反对 回复 2021-03-30
?
偶然的你

TA贡献1841条经验 获得超3个赞

这也可能起作用:


x = """[

        __import__("testContextSummary").TestContextSummary, 

        __import__("util.testGroupUtils").testGroupUtils.TestGroupUtils]

"""

testDB=eval(x)


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信