代码之家  ›  专栏  ›  技术社区  ›  LoudNPossiblyWrong

在python脚本内执行python脚本

  •  6
  • LoudNPossiblyWrong  · 技术社区  · 14 年前

    我有一个场景,我想动态生成一个python脚本——在我的主python脚本中——将它存储为一个字符串,然后在需要时,从我的主脚本执行这个动态生成的脚本。

    有可能吗,如果有,怎么办?

    谢谢

    6 回复  |  直到 9 年前
        1
  •  6
  •   S.Lott    14 年前
        2
  •  12
  •   Wayne Werner    14 年前

    对于文件中的脚本,请使用exec

    对于字符串中的脚本,使用eval

    !!!! 但是 !!!!

    在使用从外部源传入的字符串之前,请检查它们的健全性! 否则,您将暴露执行任意代码的能力 在你的计划中, 所以 范围检查你的变量!

    你不想问这个问题:

    “对不起,妈妈,你真的给儿子起名叫罗伯特吗?”;学生们放下桌子;——“?

    如果你不理解参考资料-看这个快速卡通…

    http://xkcd.com/327/

    但当你撤离时,你要对你正在撤离的指示负全责。

        3
  •  1
  •   S.Lott    14 年前
        4
  •  1
  •   Gangadhar    14 年前

    如果要在主脚本的上下文中执行脚本,可能需要检查 eval [ http://docs.python.org/py3k/library/functions.html#eval ]

        5
  •  0
  •   Karim    14 年前

    不知道这有多明智,但不是 exec 函数如果需要执行python代码,使用什么?

        6
  •  0
  •   unutbu    14 年前

    你要做的事情有优先权。这个 collections.namedtuple 函数生成传递给 exec 以便构建动态定义的类。