我正在用 Python 做一个项目,该项目涉及大量使用持久字典的交互工作。如果我不进行交互式开发,我可以使用 contextlib.closure 并且相当确信架子最终会被写入磁盘。但就目前而言,没有任何代码可以轻松地包含在“with”语句中。我宁愿不必相信自己在会话结束时在我的书架上调用 close()。
涉及的数据量并不大,每次操作后我都会很乐意将一个架子同步到磁盘。我发现自己为 shelve 编写了一个包装器,但我不是一个足够强大的 Python 程序员来识别我需要覆盖的正确的 dict 方法集。在我看来,如果我正在做的是一个好主意,那么它可能以前就已经做过了。处理此问题的典型正确方法是什么?
我要补充一点,我喜欢使用 shelve,因为它是一个简单的模块,而且它带有 Python。如果可能的话,我宁愿避免做一些需要(例如)拉入一个复杂的库来处理数据库的事情。
我正在使用带有 SP3 的 WinXP、通过 Anaconda 1.6.2(32 位)的 Python 2.7.5,并在 Spyder 中运行。通过查看支持我的书架的文件的修改时间,我可以知道在我调用同步或关闭之前,书架不会更新。