如何重新创建' dir'搁置db

时间:2016-10-28 12:38:44

标签: python-3.x shelve

我每天都会将数据存储到一个搁置文件中。今天我发现了一些最后的密钥丢失。不更改dat文件大小。 dir文件和bak文件包含除最后一些键之外的所有键。如何重新创建此文件,或者如何重新扫描我的dat文件并恢复所有存储的项目?

1 个答案:

答案 0 :(得分:1)

我用十六进制编辑器和双手解决了我的问题。步骤很简单:

  1. 使用十六进制编辑器打开dat文件。

  2. 打开我们的目录文件

  3. 查找数据偏移量。它应为0.这是偏移1. Fig 1

  4. 找到十个零的块,并在该块的开始处找到偏移量。这是偏移2. Fig 2

  5. 从偏移量2中减去偏移量1。在我的情况下,它是71768182 - 0 = 71768182.这是数据长度。

  6. 我们应该写到dir文件: '1', (0, 71768182)

    • 1 - 我们数据库中此项目的关键字。

    • 0 - 开始数据块的偏移量

    • 71768182 - 数据块的长度;

  7. 转到新数据块的开头。 Fig 3

  8. 转到第3步