有没有办法使用在搁置蟒蛇临时文件(并确保它清除自身上)一个简单的方法?

StackOverflow https://stackoverflow.com/questions/1298037

  •  18-09-2019
  •  | 
  •  

基本上,我想无限大小(更准确地,硬盘驱动器,而不是受存储器限制)在一个python程序我写字典。这似乎是临时文件和搁置模块自然地适合于这一点,但是,我不能看到如何以安全的方式将它们一起使用。我希望在货架是GCed(或保证删除后货架不再使用了,无论何时),但唯一的解决办法,我能想出这个涉及使用tempfile.TemporaryFile()打开要删除的临时文件文件句柄,从手柄获取文件名,使用该文件名打开一个货架,保持参考文件句柄,以防止洞GCed(和删除的文件),然后把包装上存储该货架参考。任何人具有比此回旋乱七八糟一个更好的解决方案?

限制:只能用标准Python库,并且必须是完全交叉平台

有帮助吗?

解决方案

我宁愿从shelve.Shelf继承,并重写close方法(*)来取消链接的文件。请注意,这取决于具体的dbm模块上使用,你可以有一个以上的文件,其中包含了货架。一个解决方案是创建一个临时目录,而不是一个临时文件,并在完成后的目录中删除任何东西。另一解决方案将是结合特定的dbm模块(比方说,bsddb,或dumbdbm),并删除特别是那些这些库创建文件。

(*)通知,当货架被垃圾收集的搁板的接近方法也被称为。你可以如何与垃圾文件最终的唯一情况是在翻译时崩溃或死亡。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top