Python将对象属性写入文件

时间:2019-03-22 09:18:40

标签: python python-3.x file oop

我正在使用Python OOP解决n-body模拟问题。我的每个粒子都是一个具有诸如质量,位置,速度等属性的对象,我希望每隔几个模拟时间就将粒子的属性写入文件中。因此,每个粒子将有一个文件,并且每一行在特定时间内都有其属性。因此,例如,我的课就像这样,

client_max_body_size 1024m;

最好的,更有效的方法是什么?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在python中,有一个名为Pickle的库,可让您 序列化或反序列化对象。与JSON之类的其他库相比,它效率不高,并引发了一些安全性问题(您可以here进行检查)。但这提供了一种使用以下方法编写和加载对象的简便方法:

  • pickle.dump(obj, file, protocol=None, *, fix_imports=True)
  • pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict")

另一种替代方法是使用JSON library methods

  • json.dump
  • json.load

但是在这种情况下,您必须将对象转换为JSON库可以接受的某些内置数据类型,例如dictlisttuple,以防您需要加载对象时,必须重新创建它。像这样:

with open('particle1.json', 'w') as fp:
  json.dump({'idx': particle.idx, 't': particle.t }, fp)

particle = Particle()
with open('particle1.json', 'r') as fp:
  particle_properties = json.load(fp)
  particle.idx = particle_properties['idx']
  particle.t = particle_properties['t']