我有一个场景,我想在我的主Python脚本中动态生成一个Python脚本,并将其存储为字符串,然后在需要时从我的主脚本中执行这个动态生成的脚本。
如果可能的话,应该如何实现呢?
谢谢。
如果可能的话,应该如何实现呢?
谢谢。
对于文件中的脚本,请使用exec
对于字符串中的脚本,请使用eval
在使用来自外部来源的字符串之前,请先进行合理性检查!否则,您会暴露程序内执行任意代码的能力,因此请检查变量范围!
您绝不希望问这个问题:
"对不起,女士,您真的把儿子命名为Robert'); DROP TABLE students; --吗?"
如果您不了解参考,请参阅此快速漫画...
但是,当您使用EVAL时,您要对您eval的指令负全部责任。
阅读关于execfile()
函数的内容。
http://docs.python.org/library/functions.html?highlight=exec#execfile
eval
[ http://docs.python.org/py3k/library/functions.html#eval ]。从Python 3.11版本开始,execfile
(曾经是最方便的函数)不再列为内置函数。
@George Lambert的答案是正确的。我只会添加一些代码以供快速参考。
要在脚本“main.py”中运行脚本“run_me.py”,请执行以下操作:
print("hello_world")
with open("run_me.py", "r") as fl:
exec(fl.read())
使用 eval
来运行包含在字符串中的代码:
string_w_py_code = "print('hello world')"
eval(string_w_py_code)