python - 为什么我不能在 python 的字典中保存数据?
问题描述
我有一个名为 users 的字典,它保存了他在 kivy 中的 textinput 中输入的用户数据......但是它工作正常但是当我重新运行程序时,信息全部消失了,它没有保存,我需要再次添加用户..它也是一个自动取款机系统,所以我在该字典的值中进行编辑,这意味着我无法将其保存到文件中。
class Data:
users = {}
def add_user(self, email,
password,name,lastname,country,num,day,month,year,gender,balance,created):
if email not in self.users:
self.users[email] =
[password,name,lastname,country,num,day,month,year,gender,balance,created]
return 1
else:
print("Email exists!")
return -1
def get_user(self, email):
if email in self.users:
return self.users[email]
else:
return -1
def validate(self, email, password):
if self.get_user(email) != -1:
return self.users[email][0] == password
else:
return False
class Depositpage(Screen,Widget,Data):
def __init__(self, **kwargs):
super(Depositpage, self).__init__(**kwargs)
btn1 = Button(text='Add',size_hint=(0.08,0.06),pos_hint=
{'x':0.903,'top':0.599},color=(0,0,0,1),background_color=(0,0,0,0))
btn1.bind(on_release=lambda x: self.add())
self.txt1= TextInput(multiline=False,size_hint=(0.45,0.13),pos_hint=
{'x':0.27,'top':0.475},font_size=43)
#self.ballabel = Label(text="text",font_size=20,pos_hint=
{'x':-0.04,'top':1.27},color=(0,0,0,1))
self.add_widget(self.txt1)
self.add_widget(btn1)
#self.add_widget(self.ballabel)
def add(self):
result = int(self.users['mo@gmail.com'][9]) + int(self.txt1.text)
self.users['mo@gmail.com'][9] = result
print(f"add {self.users['mo@gmail.com'][9]}")
print(self.users['mo@gmail.com'][9])
解决方案
字典不是为持久存储数据而设计的。
虽然您可以将其转储到 JSON 文件中,然后从那里加载到您需要的地方?
import json
with open('my_dict.json', 'w') as f:
json.dump(my_dict, f)
# elsewhere...
with open('my_dict.json') as f:
my_dict = json.load(f)
从 JSON 加载相当有效。
另一种选择是使用 pickle 和 marshal 模块,但与 JSON 不同的是,它生成的文件不是人类可读的,它将许多 Python 数据类型转换为字节流,然后从字节重新创建对象。
Python 中的数据持久性: https ://docs.python.org/3/library/persistence.html
推荐阅读
- javascript - 在 SSR React 应用程序上刷新 NextJS 查询参数
- uml - 实体关系图,只有一个类可以与另一个类交互时的概括
- php - WooCommerce 以编程方式创建的产品忽略价格排序过滤器
- c# - 如何将数据添加到 datagridview 组合框中
- xml - 当被迭代的项目是要选择的项目时,如何在 xsl:for-each 中选择项目?
- sql - 如何摆脱 SQL 脚本或 .xtxt 文件中的奇怪字符?
- angular - 如何正确使用`keep_classnames`?
- html - 关于 css 模块的一个快速问题,如果我总是需要 className
- c# - 调用线程无法访问此对象 - 不是 UI 对象
- json - Blogger/Blogspot 中的结构化数据 postMetadataJSON 是什么?