Я работаю с временным каталогом и хочу убедиться, что он удаляется при закрытии программы (независимо от того, была ли программа выполнена успешно). Я использую tempfile.mkdtemp
для создания каталога и помещаю созданную строку в подкласс str
, который удаляет каталог с помощью команды __del__
:
import shutil
import tempfile
class TempDir(str):
""" container for temporary directory.
Deletes directory when garbage collected/zero references """
def __del__(self):
shutil.rmtree(self.__str__(), onerror=my_error_fn)
dbdir = TempDir(tempfile.mkdtemp())
Вот в чем я не уверен: если программа закроется или произойдет прерывание клавиатуры, будет ли Python автоматически удалять/собирать мусор все переменные? Если нет, как я могу убедиться, что каталог будет удален?
Связанная информация о создании методов деструктора в Python. Похоже, пока объект TempDir не ссылается ни на что другое, использование __del__
для его уничтожения должно быть в порядке.