我试图用python创建一个族谱,我想创建一个Persons字典,其中键是Persons的名字,值是该名字的person对象。你知道吗
我可以很好地创建字典,我可以使用下面的代码保存它。你知道吗
import os, ast
myFile = open( FILE, "r+" ) # Opens the file for reading and writing
tree = myFile.read()
if tree == "":
tree = {}
else:
tree = ast.literal_eval(tree)
def save():
myFile.write(str(tree))
myFile.close()
但是,当我重新加载程序并尝试读入字典时,出现以下错误:
File "<unknown>", line 1
{'Charlie': <__main__.Person object at 0x00000000032DB860>}
^
SyntaxError: invalid syntax
我怀疑计算器无法识别对象,因为一旦程序关闭指针就不存在了。有没有一种方法可以保存我的字典,这样我就可以重新加载它,并且可以访问我的Person对象的所有数据,而不会在每次程序关闭时丢失它?你知道吗
ast.literal_eval
不是用来评估和理解自定义对象的。它用于安全地计算字符串和文本。您需要使用pickle之类的方法序列化数据。你知道吗当您有大的(或多个)对象时,可以使用
cPickle
,其中酸洗是用C而不是python来完成的,从而大大提高了速度。你知道吗如果对象序列化是您以前没有听说过的,请read this。你知道吗
相关问题 更多 >
编程相关推荐