我正在寻找一些帮助,我正在编写一个供个人使用的程序。它应该将电影的名称和等级(存储在字典中)导出到外部文件(file.txt),然后在每次运行开始时加载它。它还应该导出电影的名称并查看(也是字典)到另一个外部文件(review.txt)。我在读取file.txt并将其放入基础的行中出错。有线索吗?
base = {}
#Open and write info to base
with open('file.txt','r') as f:
# Error here :(
base = eval(f.read())
错误消息:
Traceback (most recent call last):
File "/Users/Will/Documents/movie_database.py", line 18, in <module>
base = eval(f.read())
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
答案 0 :(得分:2)
您的文件为空,因此eval()
会抛出异常,因为找不到Python表达式:
>>> eval('') # empty string
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
你不应该首先使用eval()
,但是这里的安全隐患是可怕的。可以欺骗你加载任意文件的人现在可以接管你的Python进程,并将你的机器变成垃圾邮件僵尸僵尸。
json
或shelve
(或直接使用pickle
,虽然这也有安全隐患),但它会为您提供更好,更强大的序列化选项。您还可以考虑使用sqlite3
作为SQL数据库选项。