在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的文件中保存对象数组的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在文件中保存/存储数组中的对象?

如何在 Cython 中将大型 malloc 数组返回或保存为 Python 对象?

Python:将 JSON 对象转换为 JSON 数组

将对象保存在核心数据中(字符串属性,双精度数组)

Python 中JSON数据的读写

将 json 对象文件保存为 json 数组而不是 s3 上的 json 对象