【发布时间】:2016-12-20 18:06:44
【问题描述】:
我有一个名为flower的类,有两个属性,名称和价格
我制作了一个列表,其中有一些花卉对象并将它们写入文件,如何通过读取文件来创建对象列表?
这是我文件中的内容: [百合;5、玫瑰;10]
【问题讨论】:
-
您知道,您的文件文本设置得像字典,尽管它是一个列表。如果将方括号切换为大括号,将分号切换为冒号,则编码比列表容易得多,并且语法正确。
我有一个名为flower的类,有两个属性,名称和价格
我制作了一个列表,其中有一些花卉对象并将它们写入文件,如何通过读取文件来创建对象列表?
这是我文件中的内容: [百合;5、玫瑰;10]
【问题讨论】:
Python 提供了几种标准方法来将对象序列化到文件中以供以后检索。最常见的两个是 pickle 和 JSON(使用 simplejson 模块)。
如果您只打算在 Python 程序中使用序列化数据,那么pickle 是更简单的选择。如果您需要能够跨多个程序共享数据,那么 JSON 是更自然的选择。
您可以在此处阅读有关 pickle 模块的更多信息:https://docs.python.org/2/library/pickle.html
作为一个使用pickle的简单示例:
class Flower(object):
def __init__(self, type, value):
super(Flower, self).__init__()
self.type = type
self.value = value
def __str__(self):
return "I'm a {} and cost ${}!".format(self.type, self.value)
if __name__== "__main__":
flowers = [ Flower("lily",5), Flower("rose",10) ]
for f in flowers:
print f
pfile = open("flower_list.pickle", mode="wb")
pickle.dump(flowers, pfile)
pfile.close()
pfile = open("flower_list.pickle", mode="rb")
recalled_flowers = pickle.load(pfile)
pfile.close()
for f in recalled_flowers:
print f
【讨论】: