【发布时间】:2014-10-24 13:59:22
【问题描述】:
现在我可以使用我的程序创建和编辑字典,但我需要能够将字典变量保存到文件中,然后加载该文件并替换旧字典。
类似这样的:
Dict1={key:value}
Dict2=Dict1
将 Dict2 保存到文件,然后加载文件,以便我可以替换 Dict1
Dict1=Dict2
【问题讨论】:
标签: python file dictionary
现在我可以使用我的程序创建和编辑字典,但我需要能够将字典变量保存到文件中,然后加载该文件并替换旧字典。
类似这样的:
Dict1={key:value}
Dict2=Dict1
将 Dict2 保存到文件,然后加载文件,以便我可以替换 Dict1
Dict1=Dict2
【问题讨论】:
标签: python file dictionary
使用json! Json 比 eval/pickle 更快更安全。 (顺便说一句,产生的文件比泡菜小) Json 不会执行任何代码(不涉及“魔法”)。
import json
# Write to file
d={123:123}
json.dump(d,open("myfile","w"))
# Load from file
d = json.load(open("myfile","r")
【讨论】:
使用模块pickle:
favorite_color = { "lion": "yellow", "kitty": "red" }
pickle.dump( favorite_color, open( "save.p", "wb" ) )
favorite_color = pickle.load( open( "save.p", "rb" ) )
但请注意,从不安全的来源中提取数据可能会导致安全问题
【讨论】:
最简单的方法是这样的:
f=open("myFile", "w")
f.write(dict2)
f.close()
稍后:
f=open("myFile", "r")
dict2=eval(f.read())
f.close()
诀窍在于 dict 的字符串表示(将写入文件)类似于'{ "lion": "yellow", "kitty": "red" }'
eval() 函数在读取文件后解释这个字符串,因此返回一个 dict 对象。
但是:请注意:有人可能会用 python-code 替换文件的内容来格式化您的硬盘。如果您对安全性有此类顾虑,最好使用 pickle 之类的东西。
【讨论】: