来自文件的eval行

时间:2013-11-08 21:59:56

标签: python file eval

我正在创建一个在txt文件中存储选项的程序,我尝试了几个不同的行,但到目前为止我认为eval是最好的。

我在文件中收到了这些信息:

colordefondo = "#abcdef"

我在程序中得到了eval

for line in open("filename.txt", "r"):
  eval(line)

然而,当我尝试代码时,它给了我这个错误:

Traceback (most recent call last):
File "D:\project-sae\Sae.py", line 25, in <module>
eval(line)
File "<string>", line 1
colordefondo = "#abcdef"
             ^
SyntaxError: invalid syntax

我的问题是为什么?如果有人知道从txt文件中加载和存储多个选项的值的更好方法,那就太好了。不过我的问题是关于eval失败的原因,我对eval如何工作的了解似乎是错误的,我不知道为什么,以前曾多次使用过,只是从文件中删除过。

1 个答案:

答案 0 :(得分:5)

正如文档所说,'eval'评估表达式。不是声明。作业是陈述。

您可以使用exec语句。但是如果你想执行文件的所有行,那正是execfile所做的。 (我在这里假设Python 2.x; 3.x中的情况有点不同,但这个想法很相似。)

然而,这首先是一个坏主意。从txt文件加载和存储多个选项值的更好方法是使用除Python源之外的任何其他格式。 JSON,.ini文件,.rc文件等Python内置了代码来处理各种这样的格式。请参阅File FormatsInternet Data Handling以获取相关模块的列表,仔细阅读并选择您想要的模块。