【问题标题】:How to execute code string in Python?如何在 Python 中执行代码字符串?
【发布时间】:2012-07-26 13:59:37
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: python execute execfile


    【解决方案1】:
    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 错误。我会努力寻找另一种方式。
    • 我删除了文件顶部的空行以及像“# ////////////”这样的文件头 cmets,现在它可以工作了。不知道为什么它不会那样工作。因为当我在插件外部使用 execfile 作为测试时,它会处理所有这些。
    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2011-06-15
    相关资源
    最近更新 更多