TemporaryDirectory
- это объект, который изначально предназначен для использования в контексте (оператор with
), чтобы избежать необходимости выполнять удаление вручную. У него есть cleanup
метод, который можно вызвать вручную для удаления временной папки, и атрибут name
, который возвращает полный путь к каталогу. Таким образом, вы могли либо позвонить temp_dir.cleanup()
напрямую, либо os.removedirs(temp_dir.name)
.
Если вы действительно хотите самостоятельно управлять временем жизни папки, лучше используйте tempfile.mkdtemp
.
Для получения дополнительной информации Вот еще одна ветка на ту же тему. Подводя итоги, имейте в виду, что TemporaryDirectory
был разработан, чтобы сделать вашу жизнь проще и безопаснее, автоматически удалив временную папку за кулисами:
with tempfile.TemporaryDirectory() as temp_dir_fullpath:
# Beware temp_dir_fullpath != tempfile.TemporaryDirectory() !!!
print('created temporary directory:', temp_dir_fullpath)
Это очень удобно для недолговечного каталога, ограниченного одним контекстом (а именно, не передавать путь другим методам или классам ...). Однако, если вам нужно управлять им самостоятельно (в основном, чтобы повторно использовать его позже в разных контекстах или передать другим методам), на мой взгляд, вам лучше выполнить эту работу самостоятельно и просто использовать простой метод tempfile.mkdtemp
, который tempfile.TemporaryDirectory
вероятно, делает это под капотом, добавляя дополнительный сахар для автоматического удаления за счет возврата объекта вместо простой строки. Таким образом становится ясно, что вы справляетесь с удалением самостоятельно, а не с ошибкой.
person
milembar
schedule
19.02.2021