将Python对象属性写入txt文件

时间:2015-07-08 14:43:09

标签: python oop

我想为我构建的几个Python对象创建一个“元数据”文件,并想知道是否有一种优雅的方法可以将这些属性的子集写入.txt文件。理想情况下,.txt文件将具有以下格式:

object.Name = thisistheobjectname object.Value = thisistheobjectvalue etc...

3 个答案:

答案 0 :(得分:2)

如果您的目标是稍后重复使用此对象,则不要重新发明轮子并使用pickle。 但是如果你的目标只是在一个漂亮的txt文件中获取对象变量,那么你可以利用对象的__dict__

您可以将其存储在JSON中,或将其转换为适用于您的内容:

例如:

import json

class Foo(object):
  def __init__(self, name, value):
    self.name = name
    self.value = value

myfoo = Foo('abc', 'xyz')
with open('foo.txt', 'w') as f:
  f.write(' '.join(["myfoo.%s = %s" % (k,v) for k,v in myfoo.__dict__.iteritems()]))

会导致类似:

myfoo.name = abc myfoo.value = xyz

答案 1 :(得分:1)

如果您正在寻找简单的内容,可以将其用于上面的示例。

import sys
class Foo(object):
    bar = 'hello'
    baz = 'world'

f = Foo()
print "\n".join(("`%s.Name=%s %s.Value=%s`" % (f.__class__.__name__, name, f.__class__.__name__, getattr(f, name)) for name in dir(f) if not name.startswith("__")))

将给出

`Foo.Name=bar Foo.Value=hello`
`Foo.Name=baz Foo.Value=world`

对于更复杂的序列化,最好使用pickle

答案 2 :(得分:0)

使用Pickle库进行对象序列化。

https://docs.python.org/2/library/pickle.html