【问题标题】:Reading a list of class objects from a file in python从python中的文件中读取类对象列表
【发布时间】:2016-12-20 18:06:44
【问题描述】:

我有一个名为flower的类,有两个属性,名称和价格

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

这是我文件中的内容: [百合;5、玫瑰;10]

【问题讨论】:

  • 您知道,您的文件文本设置得像字典,尽管它是一个列表。如果将方括号切换为大括号,将分号切换为冒号,则编码比列表容易得多,并且语法正确。

标签: python list class


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多