python - 如何在 Python 中执行代码字符串?

标签 python execute execfile

我知道这里有一个类似的问题,但我遇到了一个不同的问题。

我在插件中有一些代码文件,但插件使用只有软件知道的内部路径,所以我无法访问该路径以将其与 execfile 一起使用。

但是有一个名为 readInternalFile (path) 的内部 python 函数,我可以在其中使用这个内部路径,它以字符串形式返回这个文件的内容。

所以我想我可以使用标准的 python 函数 exec,但是我一这样做,它就提示第一行是 '\r\n'。

我该如何解决这个问题?我打印了 readInternalFile 返回的数据类型,它是 str,所以一切都应该没问题,对吧?

文件中的代码自行运行,没有语法错误等。

最佳答案

s1 = readInternalFile(path)
statements = s1.split("\r\n")
for stmt in statements:
    exec(stmt)

应该可以

>>> s1 = "a=32\r\nb=a+5\r\nprint b"
>>> statements = s1.split("\r\n")
>>> for stmt in statements:
...    exec(stmt)
...
37
>>>

或者您可以将末尾替换为“;”像这样

>>> s1 = "a=32\r\nb=a+5\r\nprint b"
>>> s2 = s1.replace("\r\n",";")
>>> exec(s2)
37

我还应该提到通常使用 exec 是一个坏主意...

如果你切换你的终端编码,这也会中断......

关于python - 如何在 Python 中执行代码字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11695445/

相关文章:

javascript - 仅当元素完全加载时执行一次的函数

python - Python 3 中 execfile 的替代方案?

python - Flask-Mysql更新数据时类型错误

python - 将 MySql 数据库值拉入列表存储 - Python3 和 Mysql.connector

Python编译/解释过程

python - execfile() 不能可靠地用于修改函数的局部变量

python - django + nginx 无法加载静态文件

python - MySQLdb 中执行参数类型的问题

python - 自定义调度程序以具有带超时/终止开关的顺序 + 半顺序脚本?