Python-向用户显示游戏保存文件的推荐方式

时间:2019-03-21 01:26:55

标签: python deserialization pickle savestate

在网上搜索时,我发现了很多用于将程序数据保存到文件中或从文件中加载程序数据的教程。但是,我已经知道这一点(我正在使用Python pickle来序列化/反序列化对象)。

我的问题是应该如何向用户显示文件?特别是如果有多个文件,我要显示每个保存文件的摘要信息,以供用户选择要加载的文件。

我正在考虑的一些选项如下:

  1. 加载所有保存文件,显示关键信息。

    这是最简单的解决方案,但我一直认为必须有更好的方法?

  2. 将保存文件的元数据存储在另一个文件中。

    读取此文件以显示每个保存文件的关键信息。

    我的问题是我是否需要担心此图元文件与实际保存文件之间的一致性/完整性?例如,如果保存操作成功更新了游戏保存文件,但是游戏在可以更新元文件之前崩溃,则数据将被破坏。

  3. 将元数据放入文件名

    当元数据仅是少数几个字段时可能起作用。但这甚至是个好主意吗?

  4. 将元数据作为标题信息放入文件中

    然后,仅读取要显示的标题部分。但是,我不知道如何使用pickle

我并不是在做一个过于庞大的游戏,但是我仍然希望实现一种最佳实践方法。因此,我正在寻找一种简单的愚蠢解决方案,而不是一些过于复杂的解决方案,但还是希望它更干净/不如上面的选择1愚蠢。

1 个答案:

答案 0 :(得分:0)

感谢Michael ButscherSteve的建议!我认为这对我的情况非常有效。

  1. 每个保存文件都会有一个伴随的元数据文件,例如save023.datsave023.meta

  2. 为确保这对之间的一致性,首先在临时文件save023.dat.temp

  3. 上执行写操作
  4. 成功后,更新元文件save023.meta

  5. 最后,在第3步成功完成后,将save023.dat.temp重命名为save023.dat

  6. 无论如何,如果缺少元文件,或者程序检测到存在.temp文件,它将重新生成.meta文件(然后重命名{ {1}}文件(如果适用)