我正在尝试制作一个小型应用程序,该应用程序将根据存储的材料/浓度指标来计算电荷量。
字典不时需要更新和存储以备将来使用。
下面的代码片段要求用户为字典提供新值,然后对其进行更新。
baseDict={'a':10, 'b':20, 'c':30, 'd':40}
def updateDict(key, value):
temp = {key : value}
baseDict.update(temp)
return baseDict
key = str(input('Enter key\n'))
value = input('Enter value\n')
baseDict = updateDict(key, value)
问题在于重新启动外壳程序时,baseDict返回到原始值。
我在2010年左右就找到了类似问题的解决方案,但是它们使用Pickle,shelfve,JSON将dict存储/检索到一个单独的文件中,并在每次运行代码时将其加载。
我打算将代码转换成一个小的.exe文件,以便在无py计算机上运行。
在这种环境下如何使baseDict保持更新的任何建议将不胜感激。
谢谢!
答案 0 :(得分:0)
您可以将其保存为txt,然后重新加载。
因此,请自己运行代码,如下所示:
with open('test.txt','w') as f:
f.write("{'a':10, 'b':20, 'c':30, 'd':40}")
然后,用下面的代码运行另一个模块:
import ast
with open('test.txt','r') as f:
baseDict=ast.literal_eval(f.read().rstrip())
def updateDict(key, value):
temp = {key : value}
baseDict.update(temp)
return baseDict
key = str(input('Enter key\n'))
value = input('Enter value\n')
baseDict = updateDict(key, value)
with open('test.txt','w') as f:
f.write(str(baseDict))
答案 1 :(得分:0)
据我所知,保持此类更改的唯一方法是使用本地存储。 Jsons,文本文件,数据库都可以,甚至您可以创建自己的编码类型的文件。不过,大多数应用程序都需要安装,也许您可以选择加密您的数据并将其存储在秘密文件中的目录中,由应用程序在安装过程中创建。
答案 2 :(得分:0)
使用pg_trigger
或json
比保存纯文本并pickle
更好。我会推荐ast.literal_eval
:
对于json
,首先运行一次:
json
然后:
import json
with open('baseDict.json', 'w') as f:
json.dump({'a':10, 'b':20, 'c':30, 'd':40}, f)
请参阅here,了解为什么import json
with open('baseDict.json','r') as f:
baseDict = json.load(f)
# your code
with open('baseDict.json', 'w') as f:
json.dump(baseDict, f)
比json
更好。