在Python 3中如何删除3个架子文件?

2024-04-23 14:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用shelve在http://code.google.com/p/filecache/编写了几个单元测试,python2正好保存了我指定的文件名搁架打开()但在python3中,我得到3个不同的文件“bak”、“dat”和“dir”。所以在测试开始之前,我想删除这些文件,但我不知道我是否能保证它们的文件名或扩展名。在

如果我知道一个架子的名字,我怎么能把它擦掉?在


Tags: 文件comhttp文件名dirgooglecode单元测试
2条回答

我使用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目录。在

相关问题 更多 >