在python中从文件中编写和读取对象

时间:2016-02-18 14:31:41

标签: python

有没有人知道将一个完整的类实例直接编写到文件中的方法,而不是使用read()将该对象写成字符串行。我使用pickle.dump()来执行此操作,但文本文件是创建不是一个可读的形式。如果有任何其他方式请告诉。然后在文件对象中明智地读取所有这些对象。并打印它。

2 个答案:

答案 0 :(得分:0)

可读格式的问题在于,python需要知道什么是可读格式。我的意思是需要知道如何序列化你的对象。 您可以尝试json,它将自动转换为文本并返回常见的POD数据。即使是嵌套的,所以你可以拥有一个带有嵌套列表和嵌套字典的复杂字典,只要你有pod数据,它就会被序列化。 这意味着您可能需要在您的类上使用序列化/反序列化方法,该方法会吐出一组pod数据并使用相同的数据块重新隐藏该类。

我在一个库上工作以实现这一点,你可能有兴趣看看,它利用了python描述符。 https://github.com/giordi91/storable_class

答案 1 :(得分:0)

提到了

Userform.Show vbModeless 来制作Python可读的文本输出。 如果您想以自己的格式打印它,定义自己的方法pickle将不会那么难: 您可以使用dir(object)遍历对象的属性和方法,并将它们写在文本文件的不同行上。

obj.ouput()

如果您不想要这些方法,则可以在循环时检查def output(self): with open(self.__name__ + "output.txt","w") as f: f.write(self.att.__name__ +" "+ self.att + "/n") for att in dir(obj) if not att.startswith('__') 是否为假。

详情请见Iterate over object attributes in python