在python的文件中保存对象数组
Posted
技术标签:
【中文标题】在python的文件中保存对象数组【英文标题】:save array of object in file in python 【发布时间】:2021-10-03 13:10:53 【问题描述】:我想将我的对象数组保存在 python 中的文件中,我测试了 pickle、numpy、..但它不起作用。 我想将它的实例保存在文件中的类是:
class pesrson():
def __init__(self,name,centralwidget):
self.name=name
self.centralwidget=centralwidget
def config(self):
self.frame_eployee = QFrame(self.centralwidget)
self.frame_eployee.setObjectName(u"frame_eployee")
self.frame_eployee.setGeometry(QRect(20, 590, 321, 51))
self.frame_eployee.setStyleSheet(u"color:rgb(85, 170, 255)")
self.frame_eployee.setFrameShape(QFrame.StyledPanel)
self.frame_eployee.setFrameShadow(QFrame.Raised)
self.label_fix_logo_user = QLabel(self.frame_eployee)
self.label_fix_logo_user.setObjectName(u"label_fix_logo_user")
self.label_fix_logo_user.setGeometry(QRect(10, 0, 41, 41))
self.label_fix_logo_user.setPixmap(QPixmap(u"D:/V2.0.0/Programme/qt/UI design/picture/user.svg"))
self.label_name_employee = QLabel(self.frame_eployee)
self.label_name_employee.setObjectName(u"label_name_employee")
self.label_name_employee.setGeometry(QRect(60, 10, 101, 21))
self.label_name_employee.setStyleSheet(u"color: rgb(255, 255, 255);\n"
"font: 25 10pt \"Segoe UI Light\";")
self.label_tim_login = QLabel(self.frame_eployee)
self.label_tim_login.setObjectName(u"label_tim_login")
self.label_tim_login.setGeometry(QRect(190, 10, 61, 21))
self.label_tim_login.setStyleSheet(u"color: rgb(255, 255, 255);\n"
"font: 25 10pt \"Segoe UI Light\";")
self.label_time_logOut = QLabel(self.frame_eployee)
self.label_time_logOut.setObjectName(u"label_time_logOut")
self.label_time_logOut.setGeometry(QRect(250, 10, 61, 21))
self.label_time_logOut.setStyleSheet(u"color: rgb(255, 255, 255);\n"
"font: 25 10pt \"Segoe UI Light\";")
self.label_name_employee.setText(QCoreApplication.translate("MainWindow", self.name, None))
self.label_tim_login.setText(
QCoreApplication.translate("MainWindow", u"<html><head/><body><p align=\"center\">08:34</p></body></html>",
None))
self.label_time_logOut.setText(
QCoreApplication.translate("MainWindow", u"<html><head/><body><p align=\"center\">08:34</p></body></html>",
None))
return self.frame_eployee
我用这段代码创建了这个对象:
p=pesrson("faezeh",self.ui.centralwidget)
self.ui.verticalLayout.addWidget(p.config())
self.tree.append(p)
现在我想保存这个数组然后读取它们并可以使用所有属性。 这个错误是我使用 json 时出现的:
TypeError: Object of type person is not JSON serializable
<employee.pesrson object at 0x000001DD17C7B7F0>
当我使用pickle时出现这个错误:
Possibly unsupported): cannot pickle 'PySide2.QtWidgets.QFrame' object
【问题讨论】:
【参考方案1】:您可以使用标准库中的 pickle 模块,也可以使用数据库而不是文件。我认为它会适合您的问题。
【讨论】:
感谢您的回复。我使用 SQLite DB 然后我的问题就解决了以上是关于在python的文件中保存对象数组的主要内容,如果未能解决你的问题,请参考以下文章