2024-04-23 14:38:21 发布
网友
我用shelve在http://code.google.com/p/filecache/编写了几个单元测试,python2正好保存了我指定的文件名搁架打开()但在python3中,我得到3个不同的文件“bak”、“dat”和“dir”。所以在测试开始之前,我想删除这些文件,但我不知道我是否能保证它们的文件名或扩展名。在
如果我知道一个架子的名字,我怎么能把它擦掉?在
我使用shelve是因为tempFile和dict[]对象不能跨模块持久化。正如您所发现的,调用.clear()不会清除磁盘上持久对象的内容,退出后将填充的r+w文件留在磁盘上。(类似于释放后使用漏洞)您可以在完成使用后删除搁置:
import os import shelve shelve_name = 'shelve_name' shelve_contents = shelve.open(shelve_name, flag='c', protocol=None, writeback=False) shelve_file = (os.path.join(os.getcwd(), shelve_name)) os.remove(shelve_file)
您得到的扩展取决于使用的数据库后端。Python2和Python3之间的默认值可能不同,但也可能是环境中可用的数据库接口之间的差异。在
所以不,除非使用特定的实现,即BsdDbShelf或DbfilenameShelf,否则不能保证扩展的安全性。您可以在tempfile创建的临时目录中指定一个文件,然后删除while目录。在
我使用shelve是因为tempFile和dict[]对象不能跨模块持久化。正如您所发现的,调用.clear()不会清除磁盘上持久对象的内容,退出后将填充的r+w文件留在磁盘上。(类似于释放后使用漏洞)您可以在完成使用后删除搁置:
您得到的扩展取决于使用的数据库后端。Python2和Python3之间的默认值可能不同,但也可能是环境中可用的数据库接口之间的差异。在
所以不,除非使用特定的实现,即BsdDbShelf或DbfilenameShelf,否则不能保证扩展的安全性。您可以在tempfile创建的临时目录中指定一个文件,然后删除while目录。在
相关问题 更多 >
编程相关推荐