Можно ли получить имя файла базы данных полки, используя атрибут объекта файла? (Python)
У меня есть скрипт python3, который создает несколько файлов базы данных с помощью модуля shelve. К вашему сведению, модуль shelve обертывает модуль dbm, как видно из исходного кода полки. Метод shelf.open() используется для создания файла базы данных на диске и принимает в качестве аргумента желаемый выходной путь к файлу. Однако имя создаваемого файла зависит от доступных модулей dbm в системе пользователя. Это означает, что поведение не зависит от платформы, как было описано в другом месте на SO: здесь.
Я не смог найти простой метод, чтобы подобрать имена файлов. Я надеялся, что смогу получить доступ к именам файлов в качестве атрибута (ов) объекта полки, что можно сделать с помощью атрибута имени класса FileIO. Как я могу получить имя файла (ов) полочного объекта через атрибут или метод объекта?
В противном случае я мог бы вместо этого использовать самоуничтожающийся объект временного файла в вызове shelve.open(). Однако мне не ясно, как этого добиться. Обратите внимание, что вопрос о временной полке был задан здесь для SO... но предоставленный ответ не будет работать, если пользователь находится в системе, в которой есть модуль dbm, который будет прикреплять суффикс fname.
Спасибо за ваше время.
1 ответ
Я только что нашел этот ответ, который предлагает создать файлы полок во временном подкаталоге, а затем удалить весь каталог. Я думаю, что это лучшее решение, доступное на данный момент.