程序关闭后如何保存变量并加载它们? [关闭]

Posted

技术标签:

【中文标题】程序关闭后如何保存变量并加载它们? [关闭]【英文标题】:How can you save variables and load them after the program is closed? [closed] 【发布时间】:2018-11-21 19:00:39 【问题描述】:

我正在创建一个游戏,我发现到目前为止最常见的保存程序 pickle 只能在程序打开时保存/加载。我正在制作的游戏需要很长时间才能完成,而且我认为人们不会希望每次退出后都重新开始游戏。是否有可以导入/下载的程序将变量保存在其他地方以便再次加载?

【问题讨论】:

pickle "can only save/load while the program is on" - 这相当于说 Word 不够好,因为您无法在以下情况下加载或保存文件您的计算机已关闭。像所有东西一样,pickle 会保存到一个文件中。关闭程序时文件不会消失。 【参考方案1】:

pickle,只能在程序打开时保存/加载

我不明白你的意思。

从最严格的意义上讲,这是真的——如果程序没有运行,它就无法做任何事情

但是您的意思似乎是,当程序退出时,使用 pickle 保存的文件会消失,这当然不是真的。

Pickle 是在游戏会话之间保存游戏进度的一种非常合理的方式。退出前保存文件,下次启动时加载文件,然后你就回到上次离开的地方。

【讨论】:

让我更具体一点。当您在程序上设置 pickle 并启动保存操作(在我的情况下暂时按“s”)时,它将保存由保存代码确定的请求的变量。当(在我的情况下,“l”键)您执行加载操作时,它将立即加载变量以备份您保存它们的方式。它工作正常。直到程序关闭。如果您在启动程序 agin 后尝试加载,它不会。它基本上会抛出一个错误,说没有要加载的内容,即使您之前保存了它。我正在寻找解决此问题的方法,以便它可以正确加载 向我们展示该代码。你在某个地方有错误。 # 使用 open('savefile.dat', 'wb') 保存为 f: pickle.dump([x1], f, protocol=2) # 使用 open('savefile.dat' 加载, 'rb') as f: [x1] = pickle.load(f 你得到什么错误?另外,为什么要在[x1] 周围加上括号? [x1] = pickle.load(f) ValueError: Need more than 1 value to unpack

以上是关于程序关闭后如何保存变量并加载它们? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

应用程序关闭后如何快速保存全局变量?

如何让 vbscript 将变量保存到文本文件中并在重新打开程序时调用它们?

在离子框架中保存和加载应用程序

如何将 JTable 的内容保存到文件中,然后在需要时将它们加载回来? [关闭]

UserDefaults 不会在应用程序关闭并重新打开后保存数据

每次请求后如何保存用户令牌[关闭]