我想为我构建的几个Python对象创建一个“元数据”文件,并想知道是否有一种优雅的方法可以将这些属性的子集写入.txt文件。理想情况下,.txt文件将具有以下格式:
object.Name = thisistheobjectname object.Value = thisistheobjectvalue etc...
答案 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库进行对象序列化。