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

3
我知道这里有一个类似的问题,但我遇到了不同的问题。
我在插件中有一些代码文件,但插件只使用软件知道的内部路径,所以我无法访问该路径并将其与execfile一起使用。
但是有一个名为readInternalFile(path)的内部Python函数,我可以使用这个内部路径,并将其返回作为字符串的文件内容。
所以我认为我可以使用标准的Python函数exec,但是当我执行它时,它抱怨第一行为'\r\n'。
我该如何解决这个问题?我打印readInternalFile返回的数据类型,它是str,所以一切都应该没问题,对吗?
文件中的代码本身可以正常工作,并且没有语法错误等。
1个回答

0
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是一个坏主意...
此外,如果您切换了行尾编码,这也会导致错误。

谢谢,现在它会出现意外的EOL错误。我会尝试找另一种方法。 - Joan Venge
我删除了文件顶部的空行以及类似于“# //////////////”的文件头注释,现在它可以工作了。不确定为什么之前不能这样做。因为当我在插件外使用execfile进行测试时,所有这些都可以正常工作。 - Joan Venge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接