标签: python-3.x shelve
我每天都会将数据存储到一个搁置文件中。今天我发现了一些最后的密钥丢失。不更改dat文件大小。 dir文件和bak文件包含除最后一些键之外的所有键。如何重新创建此文件,或者如何重新扫描我的dat文件并恢复所有存储的项目?
答案 0 :(得分:1)
我用十六进制编辑器和双手解决了我的问题。步骤很简单:
使用十六进制编辑器打开dat文件。
打开我们的目录文件
查找数据偏移量。它应为0.这是偏移1. Fig 1
找到十个零的块,并在该块的开始处找到偏移量。这是偏移2. Fig 2
从偏移量2中减去偏移量1。在我的情况下,它是71768182 - 0 = 71768182.这是数据长度。
我们应该写到dir文件: '1', (0, 71768182)
'1', (0, 71768182)
1 - 我们数据库中此项目的关键字。
0 - 开始数据块的偏移量
71768182 - 数据块的长度;
转到新数据块的开头。 Fig 3