我有一个场景,我想动态生成一个python脚本 - 在我的主python脚本中 - 将其存储为字符串,然后在需要时,从我的主脚本执行这个动态生成的脚本。
这是可能的,如果是这样的话怎么样?
感谢
答案 0 :(得分:12)
对于文件中的脚本,请使用exec
对于字符串中的脚本,请使用eval
在使用从外部源传入的字符串之前,完整性检查它们! 否则,您将公开执行任意代码的能力 在你的程序中, 所以范围检查您的变量!
你永远不想问这个问题:
“对不起,妈妈,你真的为你的儿子罗伯特命名吗?”; DROP TABLE学生; - “?如果您不理解参考文献 - 请参阅此快速漫画......
但是当你评价时 - 你要对你正在评估的指示负全部责任。
答案 1 :(得分:6)
答案 2 :(得分:1)
答案 3 :(得分:1)
如果要在主脚本的上下文中执行脚本,可能需要检查eval
[http://docs.python.org/py3k/library/functions.html#eval]
答案 4 :(得分:0)
不确定这是多么明智,但如果你需要执行Python代码,那么你使用的exec函数不是吗?
答案 5 :(得分:0)
您尝试做的事情优先。 collections.namedtuple函数构建一个模板字符串,该字符串传递给exec
以构建动态定义的类。