Python: различия между tempfile.mkdtemp и tempfile.TemporaryDirectory

Мне нужно создать временный каталог, в котором будет размещен другой именованный каталог и вложенные файлы. В конце концов, именованный каталог и вложенные файлы будут добавлены в tarball и временный каталог может быть удален. Первоначально собирался использовать mkdtemp, но похоже, что метод TemporaryDirectory удаляет себя? Может кто-нибудь объяснить различия.

2 ответов


вы правы в том, что единственная реальная разница заключается в том, что TemporaryDirectory удалит себя, когда это будет сделано. Это позволит вам сделать что-то вроде:

with tempfile.TemporaryDirectory() as dir:
   do_stuff_with(dir)

когда вы выходите из области with временный каталог будут удалены. С mkdtemp, вам нужно будет сделать это вручную.


из документации tempfile.TemporaryFile():

эта функция создает временный каталог с использованием mkdtemp () ( предоставленные аргументы передаются напрямую к основной функции). Этот результирующий объект может использоваться как context manager (см. оператор With Context Managers). По завершении контекст (или разрушение временный объект каталога), новый создан временный каталог и все его содержание снято с файловая система.