我想在txt文件中保留一段代码并从我的Python脚本中执行它。
例如在txt文件中有
print("ok")
我希望我的程序打印ok
而不打印print("ok ")
。我怎么能这样做?
答案 0 :(得分:2)
做你想做的事通常会带来安全风险,但不一定如此。
您必须告知用户潜在的风险。
有多个程序使用execfile()或compile()和exec语句来提供插件系统。
没有什么比这更丑的了,你只需知道你在做什么,何时何地。
execfile(),eval()和exec语句都允许您指定执行/评估代码的范围。
myscope = {}
execfile("myfile.txt", myscope)
这将阻止新代码与旧代码混合。 myfile.txt中的所有变量类,函数和模块都将包含在myscope词典中。
但是,这并不能阻止恶意代码从磁盘或类似内容中删除所有文件。
Python 2有一个名为rexec的漂亮模块,但是从Python 2.2开始它不再起作用了。
它在受限制的环境中实现execfile()exec语句和eval()。 虽然它不起作用,但它可以挖掘代码以了解它是如何完成的。
因此,您可以看到,只允许从外部源执行安全代码(尽管安全可靠)。
还有另一种方式。 您可以加载文件,从中编译代码,然后检查它以查看它的作用。然后说,是的,我会执行或不执行,我不会。然而,这是一个更多的工作和许多复杂性。
但是,我不认为有必要通过所有这些东西。请详细说明您的问题。级别编辑器究竟是什么意思? 我不认为外部代码是解决方案。
答案 1 :(得分:0)
您正在寻找eval
功能
eval
是一个函数,它将任意python代码表示为字符串并在运行时执行它。
示例强>
>>> x = 1
>>> y = eval('x+1')
>>> print(y)
2
它适用于Python 2.x和3.x
查看文档:https://docs.python.org/2.7/library/functions.html#eval