Вопрос

Я написал несколько междушек с отчистом в http://code.google.com/p/filecache./ и python 2 сохраняют именно имя файла i specifiy в Shelve.Open (), но в Python 3 я получаю 3 разных файла «Bak», «DAT» и «DIR».Поэтому до начала тестов я хочу стереть эти файлы, но я не знаю, есть ли у меня есть какие-либо гарантия относительно их имени файла или расширения.

Как я могу стереть полку, если я знаю, что это имя?

Это было полезно?

Решение

Какие расширения вы получаете, зависит от того, в каком бэкэнде базы данных используется.Возможно, что по умолчанию различается по умолчанию между Python 2 и Python 3, но также может быть разница между тому, что интерфейсы баз данных доступны в вашей среде.

Так что нет, у вас нет гарантии расширений, если вы не используете конкретную реализацию, то есть либо BSDDBSHELF или DBFileNameShelf.Возможно, вы можете указать файл во временном каталоге, созданном TempFile, а затем удалить каталог во время.

Другие советы

Я использую полки, потому что 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)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top