Сообщить об ошибке.

Функция TemporaryDirectory() модуля tempfile в Python

Создать временный каталог

Синтаксис:

import tempfile

tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None,
                             ignore_cleanup_errors=False, *, delete=True)

Параметры:

  • suffix=None - суффикс временного каталога,
  • prefix=None - префикс временного каталога,
  • dir=None - директория для создания временного каталога.
  • ignore_cleanup_errors=False - игнорировать исключения во время явной или неявной очистки каталога.
  • delete=True - отключение очистки дерева каталогов.

Изменено в Python 3.10: добавлен аргумент ignore_cleanup_errors.

Изменено в Python 3.12: Добавлен аргумент delete.

Возвращаемое значение:

  • объект открытого каталога.

Описание:

Функция TemporaryDirectory() модуля tempfile надежно создает временный каталог, используя те же правила, что и tempfile.mkdtemp(). Полученный объект можно использовать как менеджер контекста. После завершения оператора with или уничтожения объекта временного каталога, временный каталог и все его содержимое удаляются из файловой системы.

Имя каталога может быть получено из атрибута name возвращаемого объекта. Когда возвращенный объект используется в качестве менеджера контекста, то имя будет назначено цели предложения as в операторе with.

Каталог можно явно очистить, вызвав метод TemporaryDirectory.cleanup(). Если аргумент ignore_cleanup_errors=True (добавлено в Python 3.10), то любые необработанные исключения во время явной или неявной очистки (например, PermissionError удаление открытых файлов в Windows) будут проигнорированы, а остальные удаляемые элементы будут удалены ”наилучшим образом". В противном случае будут возникать ошибки при любом выполнении очистки контекста (вызове TemporaryDirectory.cleanup(), выходе из диспетчера контекста, при сборе мусора или во время завершения работы интерпретатора).

Аргумент delete (добавлено в Python 3.12) можно использовать для отключения очистки дерева каталогов при выходе из контекста. Хотя отключения очистки для диспетчера контекста может показаться необычным, это может быть полезно во время отладки или когда необходимо, чтобы поведение при очистке было условным, основанным на другой логике.

Вызывает событие аудита tempfile.mkdtemp с аргументом fullpath.

Пример использования tempfile.TemporaryDirectory():

Когда требуется несколько временных файлов, может быть удобнее создать один временный каталог с помощью tempfile.TemporaryDirectory() и открыть все файлы в этом каталоге.

import pathlib, tempfile

with tempfile.TemporaryDirectory() as tmp:
    # имя временного каталога
    print('Имя временного каталога:', tmp)     
    # /tmp/tmpzcn1v0o0
    path_dir = pathlib.Path(tmp)
    # пишем в каталог файлы
    a_file = path_dir / 'a_file.txt'
    a_file.write_text('This is a_file.')
    b_file = path_dir / 'b_file.txt'
    b_file.write_text('This is b_file.')
    c_file = path_dir / 'c_file.txt'
    c_file.write_text('This is с_file.')
    # смотрим созданные файлы 
    print(list(path_dir.glob('*')))

# [PosixPath('/tmp/tmpzcn1v0o0/a_file.txt'), 
# PosixPath('/tmp/tmpzcn1v0o0/b_file.txt'), 
# PosixPath('/tmp/tmpzcn1v0o0/c_file.txt')]

# проверим наличие файлов после 
# закрытия временного каталога
print(list(path_dir.glob('*')))
# []

# проверим существование временного каталога 
print(path_dir.exists())
# False