从python中的文件读取类对象列表

从python中的文件读取类对象列表,python,list,class,Python,List,Class,我有一个名为flower的类,它有两个属性,name和price 我列出了一个列表,其中有一些花卉对象,我将它们写入了一个文件,如何通过读取该文件来创建对象列表 这是我的文件中的内容: [lily;5,rose;10]Python提供了两种标准方法,用于将对象序列化到文件以供以后检索。最常见的两种是pickle和JSON(使用simplejson模块) 如果您只打算在Python程序中使用序列化数据,那么pickle是更简单的选择。如果您需要能够跨多个程序共享数据,那么JSON是更自然的选择 您

我有一个名为flower的类,它有两个属性,name和price

我列出了一个列表,其中有一些花卉对象,我将它们写入了一个文件,如何通过读取该文件来创建对象列表

这是我的文件中的内容:
[lily;5,rose;10]

Python提供了两种标准方法,用于将对象序列化到文件以供以后检索。最常见的两种是
pickle
和JSON(使用
simplejson
模块)

如果您只打算在Python程序中使用序列化数据,那么
pickle
是更简单的选择。如果您需要能够跨多个程序共享数据,那么JSON是更自然的选择

您可以在此处阅读有关
pickle
模块的更多信息:

作为使用
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

正如您所知道的,您的文件的文本设置类似于字典,尽管它是一个列表。如果将方括号切换为花括号,将分号切换为冒号,那么编写代码将比列表容易得多,而且语法正确。