tempfile и функцию tempfile.TemporaryFile() или tempfile.NamedTemporaryFile().  Контекстный менеджер (конструкция with) автоматически удалит временный файл после выхода из блока, даже если возникнет исключение.
  
  import tempfile
  with tempfile.TemporaryFile(mode='w+t') as tmp_file:
      tmp_file.write('Hello, temporary world!')
      tmp_file.seek(0)
      data = tmp_file.read()
      print(data)
  # Файл автоматически удаляется после выхода из блока with
  tempfile.NamedTemporaryFile() создает временный файл с именем, которое можно получить через атрибут name.
Для работы с временными файлами в Python с использованием контекстного менеджера обычно применяют модуль tempfile, а точнее функцию tempfile.NamedTemporaryFile или tempfile.TemporaryFile. Контекстный менеджер гарантирует, что временный файл будет автоматически удален (или закрыт, в случае TemporaryFile) после выхода из блока with.
Рассмотрим пример с tempfile.NamedTemporaryFile.  Он создает временный файл с именем на файловой системе:
import tempfile
import os
with tempfile.NamedTemporaryFile(mode='w+t', delete=True) as temp_file:
    # Записываем данные во временный файл
    temp_file.write("Привет, мир!")
    temp_file.seek(0)  # Перемещаем курсор в начало файла для чтения
    data = temp_file.read()
    print(f"Содержимое временного файла: {data}")
    print(f"Имя временного файла: {temp_file.name}")
# После выхода из блока 'with', файл автоматически удаляется (если delete=True)
try:
    print(f"Проверка существования файла после выхода из блока: {os.path.exists(temp_file.name)}")
except AttributeError:
    print("Файл был удален, и атрибут name больше не доступен.")
  В этом примере:
tempfile.NamedTemporaryFile(mode='w+t', delete=True) создает временный файл в режиме чтения/записи текста (w+t). Параметр delete=True (по умолчанию) указывает, что файл должен быть удален при закрытии.with обеспечивает, что файл будет закрыт и удален, даже если внутри блока произойдет исключение.temp_file.write("Привет, мир!") записывает данные во временный файл.temp_file.seek(0) перемещает курсор в начало файла, чтобы можно было прочитать записанные данные.temp_file.read() читает содержимое файла.temp_file.name содержит имя файла на диске.with файл автоматически удаляется (или закрывается). Попытка получить доступ к temp_file.name вызовет исключение AttributeError, если файл был удален.Для временных файлов, которые не нужно именовать на диске, можно использовать tempfile.TemporaryFile:
import tempfile
with tempfile.TemporaryFile(mode='w+t') as temp_file:
    temp_file.write("Hello from temporary file!")
    temp_file.seek(0)
    content = temp_file.read()
    print(f"Содержимое временного файла: {content}")
# После выхода из блока 'with', файл автоматически закрывается, но не удаляется.
  Ключевое отличие TemporaryFile от NamedTemporaryFile в том, что он не имеет имени на файловой системе и хранится в памяти (если это возможно), или же использует временное хранилище ОС. Он также автоматически закрывается после выхода из блока with, но не удаляется.  Обычно используется когда не нужно обращаться к файлу по имени.
Преимущества использования контекстного менеджера:
NamedTemporaryFile с delete=True) после завершения работы с ним, даже если в блоке with произошла ошибка.В заключение, использование tempfile.NamedTemporaryFile или tempfile.TemporaryFile с контекстным менеджером with — это надежный и удобный способ работы с временными файлами в Python.