【问题标题】:Is there a way I can stop a dictionary from being emptied when I run the program again? [closed]当我再次运行程序时,有没有办法可以阻止字典被清空? [关闭]
【发布时间】:2020-12-24 18:40:01
【问题描述】:

Python - 我的程序中有一个空字典,稍后将被填充。当我再次运行程序时,有什么方法可以阻止它被清空?

程序字典的开头 - DATABASE = {}

程序字典结束 - DATABASE = {"Hello":1, "BYE":2} (我希望当我再次运行程序时它保持这种状态)

运行新程序 - DATABASE = {}(我不希望它被重置)

【问题讨论】:

  • 你可以把它保存到一个json文件中。
  • 一般问题称为 persistence(用于存储信息的行为)或 序列化(用于将信息转换为可以储存)。这有望帮助您进行网络搜索(工具建议与 Stack Overflow 无关)。您不能在程序开始时“停止”字典“被清空”,因为它与您填充的字典不同 - 它位于完全独立的运行时中,并且从一开始就没有满。您需要使用持久数据重新填充它。

标签: python


【解决方案1】:

一旦你运行一个程序,你编译器会保留一些 RAM 内存(易失性)并在那里分配你的字典,这样你就可以在你的代码运行时访问它(你的代码实例是一个过程)。因此,您不能保留变量(在这种情况下为字典)的原因是因为它没有保存在非易失性存储中,然后,一旦进程执行停止,为变量保留的所有 RAM 空间都会被释放.

如果您想保留字典信息,我建议您使用实际的数据库,或者您可以将字典的内容保存到文件中并在代码开头读取它。这里有一些例子:

BBDD:我真的建议你开始使用数据库,因为你会发现它在未来非常有用。

Read/Write file:简单的读/写操作。

Dump file:将信息保存到二进制文件,比简单的读/写要好。

【讨论】:

  • “我真的建议你开始使用数据库,因为你会发现它在未来非常有用。” 虽然学习更大的东西总是好的,但它可能有点矫枉过正建议针对这个特定问题采用这种方式。
  • 我想首先说这是我在堆栈溢出中的第一个响应。我知道当您开始编程时,使用数据库可能是一个很大的挑战。但老实说,如果我的老师从一开始就教我如何使用它们,或者至少鼓励我对它们进行一些研究,我会学到很多我今天知道的有用的东西。鼓励人们学习总是好的:)无论如何,谢谢你的评论,我会记住的。
猜你喜欢
  • 2022-12-04
  • 2020-05-04
  • 2021-12-12
  • 1970-01-01
  • 2015-09-23
  • 2019-07-08
  • 1970-01-01
  • 2018-08-20
  • 2020-11-03
相关资源
最近更新 更多