如何在 python 3 中将类对象列表“保存”到我的程序中?

Posted

技术标签:

【中文标题】如何在 python 3 中将类对象列表“保存”到我的程序中?【英文标题】:How can I "save" a list of class objects to my program in python 3? 【发布时间】:2020-06-23 00:26:47 【问题描述】:

所以我有一个“狗”类,其中包括大小、重量、颜色等属性,并且我已将不同的“狗”对象添加到列表/字典中。这一切都很好,但是每次我停止运行我的程序时,列表都会被清除(这是正常的)。问题是 - 如何保存此列表数据,以便当我重新运行程序时列表仍然存在并且我可以继续添加和编辑列表中的狗?

另外,如果我要在线存储数据,服务器会花钱吗?我是这里的初学者。

我一直在研究数据库、pandas 和 mysql,但我迷失在信息的海洋中,因此非常感谢任何帮助。谢谢。

【问题讨论】:

通常在线保存数据会花钱,原因是有人必须为您将存储数据的服务器付费。有两种方法可以保存数据,一种是写入文件然后检索它,另一种是您提到的将其保存到数据库。 如果您将其保存到文件中,您可以使用csvjsonpickle 等。查看如何执行此操作。网上有 100 多个关于它们的教程。第二种方法是设置本地数据库,例如 Postgres 或 Mongo 数据库,您可以暂时在您的机器上本地运行它们,而无需为它们付费。同样,我建议在线查找他们的教程。附言每当发布问题时,最好展示您迄今为止编写的代码,这样可以更好地帮助您理解如何指导您。 我的建议:两个都试试,用json保存到磁盘,用postgres保存到db。 raqib - 谢谢,您有使用 mySQL 社区服务器的经验吗?它似乎是免费的。 【参考方案1】:

一个更简单的 DB 选项是将它们写出到一个文件中,并在启动时使用 json.dump()json.load() 以 json 格式重新加载文件(如果数据更复杂,则使用 pickle)。这比尝试在简单情况下合并数据库要简单得多。

您可以找到有关这些调用的文档和 json 模块 here。

我什至用它来编码数据并在程序之间通过网络传递它。

您提到了“在线存储数据”。这是在云中运行还是什么。还是您只是想将程序中的数据写入云端以进行安全保存或其他什么?我无法回答这个问题,因为这取决于在哪里(与谁在一起)、什么和多少。

【讨论】:

谢谢。当我说“在线存储数据”时,我的意思是我希望能够使用任何安装了该程序的计算机从任何地方访问相同的数据集。我有数千个“狗”对象要存储和编辑,而且我并不总是在同一台计算机上。 @MajorTonality 您刚才描述的明显复杂性是访问控制。您可能不希望任何人都可以访问它,或者即使可以,您也可能不希望任何人都可以更改它。作为一个想法,您也许可以使用诸如 bitbucket 之类的东西作为外部可访问的存储。它也会给你一些控制。我搜索了“从 python 访问 bitbucket”并找到了从 python 访问它的方法。只是一个想法。我从未尝试过。

以上是关于如何在 python 3 中将类对象列表“保存”到我的程序中?的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中将 zip 列表保存到 csv

如何在 Python 中将对象数组保存到文件中

如何在matlab中将句柄对象层次结构保存到磁盘

如何在并行进程(python)中将项目附加到列表中?

在python中将字符串保存到二进制文件

在 Python 中将函数输出(包括 pandas DataFrame)保存到工作区