我不知道您的范围,但您可以使用另一个序列化/持久化系统,如JSON,或{a2},它们更易于人类阅读(还有其他类似YAML)。在
我在一些项目中使用了果冻作为首选项文件。它非常容易使用,但是您必须使用repr()以人类可读的形式保存数据,然后使用eval()将其读回。所以不要对任何事情都这么做,因为使用eval()会有安全风险。在
下面是一个美化表示的代码示例(添加缩进):VERSION = 'v1.1'
def read_data(filename):
return unjelly(eval(open(filename, 'r').read().replace('\n', '').replace('\t', '')))
def write_data(filename, obj):
dump = repr(jelly(obj))
level = 0
nice_dump = ['%s\n' % VERSION]
for char in dump:
if char == '[':
if level > 0:
nice_dump.append('\n' + '\t' * level)
level += 1
elif char == ']':
level -= 1
nice_dump.append(char)
open(filename, 'w').write(''.join(nice_dump))