我的文本文件如下所示:
{'testyear3': 20, 'testyear6': '0', 'testyear5': '0', 'testyear4': '0'}
它总是看起来像这样,我不能改变文本文件的顺序或者在我的程序中它的放置方式,我写了一个用代码对文本文件做的字典
with open ("totals.txt", 'w') as f27:
f27.write(str(totaldict))
因此,在程序结束时,文本文件总是恢复到上面的顺序。我将如何以文本格式将文本文件写入字典?或者我是否必须改变我写入文本文件的方式?
答案 0 :(得分:4)
您想要更改将字典写入文本文件的方式。 JSON格式将更容易处理(使用json
module):
import json
# saving
with open("totals.txt", 'w') as f27:
json.dump(totaldict, f27)
# loading
with open("totals.txt", 'r') as f27:
totaldict = json.load(f27)
但是,字典不保持任何特定的顺序;它们是按设计的无序集合。如果您想按特定顺序存储项目,则必须使用不同的数据结构(如列表),或者对信息进行排序并使用自定义格式。
答案 1 :(得分:0)
我使用python的原生解析器:
def read_dict( fname, src = None):
if src is None :
src = StringIO.StringIO(fname)
src_global = { }
locals = {}
comp_obj = compile(src, fname, 'exec')
eval(comp_obj, src_global, locals)
return locals
这会加载一个文件,并基本上对其进行解析,然后返回在解析过程中创建的局部变量。
您需要在代码前加上一些变量名,然后返回此变量而不是locals
。
当然它可能是一种矫枉过正,但我的文件中有很少的字典格式的python脚本。我想这是一种方法。