将python的版本从3.5更改为3.7后,shelve在调用sync方法时不再写入磁盘。但是,当我使用 python 3.5 时,它确实如此。
我还注意到在python 3.7上,"db"扩展名被附加到搁置数据库文件中。
有没有人知道这样做的原因,是否有任何解决方法?
事实证明,我缺少python3.7-gdbm软件包(这是一个Ubuntu Xenial服务器(。
它可以通过apt-get安装:
sudo apt-get install python3.7-gdbm
安装 gdbm 软件包后,python 将开始将搁架存储为 GNU dbm 而不是 Berkeley DB:
$ file *
shelve_obj_berkley: Berkeley DB (Hash, version 9, native byte-order)
shelve_obj_gdbm: GNU dbm 1.x or ndbm database, little endian, old