Python如何从txt文件执行代码

时间:2015-07-29 15:33:23

标签: python file execute

我想在txt文件中保留一段代码并从我的Python脚本中执行它。

例如在txt文件中有

print("ok")

我希望我的程序打印ok而不打印print("ok ")。我怎么能这样做?

2 个答案:

答案 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