Как создать временный файл в python

Обновлено: 07.07.2024

На всех языках программирования часто этой программе требуется сохранять временные данные в файловой системе, создавая временные каталоги и файлы. Эти данные могут быть не полностью готовы для вывода, но все же доступ к этим данным может принести в жертву уровень безопасности программы.

Написание полного кода для простого управления временными данными также является громоздким процессом. Это связано с тем, что нам нужно написать логику создания случайных имен для этих файлов и каталогов, а затем записи в них с последующим удалением данных после завершения всех операций.

Все эти шаги очень легко выполняются с помощью модуля tempfile в Python. Он предоставляет простые функции, с помощью которых мы можем создавать временные файлы и каталоги, а также легко получать к ним доступ. Давайте посмотрим здесь на этот модуль в действии.

Создание временных файлов

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

Вот пример программы в Python, которая создает временный файл и очищает его при закрытии TemporaryFile:

Посмотрим на результат этой программы:

Создание временного файла

В первом фрагменте кода мы очищаем файл самостоятельно. В следующем фрагменте кода, как только TemporaryFile закрывается, файл также полностью удаляется из системы.

Запустив эту программу, вы увидите, что в файловой системе вашего компьютера нет файлов.

Чтение из временного файла

К счастью, чтение всех данных из временного файла – это всего лишь вызов одной функции. Благодаря этому мы можем читать данные, которые мы записываем в файл, не обрабатывая их побайтно и не выполняя сложных операций ввода-вывода.

Давайте посмотрим на фрагмент кода, чтобы продемонстрировать это:

Посмотрим на результат этой программы:

Чтение временного файла

Нам нужно было только вызвать функцию read() для объекта TemporaryFile(), и мы смогли получить обратно все данные из временного файла. Наконец, обратите внимание, что мы записали в этот файл только байтовые данные. В следующем примере мы запишем в него данные в виде обычного текста.

Запись простого текста во временный файл

С небольшими изменениями в последней написанной нами программе мы также можем записывать простые текстовые данные во временный файл:

Посмотрим на результат этой программы:

Запись простого текста во временный файл

Создание именованных временных файлов

Именованные временные файлы важны, потому что могут быть сценарии и приложения, которые охватывают несколько процессов или даже машин. Если мы назовем временный файл, его легко будет передавать между частями приложения.

Давайте посмотрим на фрагмент кода, который использует функцию NamedTemporaryFile() для создания именованного временного файла:

Посмотрим на результат этой программы:

Создание именованного временного файла

Предоставление суффикса и префикса имени файла

Иногда нам нужно иметь некоторый префикс и суффикс в именах файлов, чтобы определить цель, которую выполняет файл. Таким образом, мы можем создать несколько файлов, чтобы их было легко идентифицировать в группе файлов о том, какой файл выполняет определенную цель.

Вот пример программы, которая предоставляет префикс и суффикс в имена файлов:

Посмотрим на результат этой программы:

Временный файл с префиксом и суффиксом

Заключение

В этом уроке мы изучили, как можно безопасно создавать временные файлы в Python для наших программ и приложений. Мы также увидели, как мы можем создавать файлы, которые могут охватывать несколько процессов, и увидели, как мы можем предоставить суффикс префикса для имен файлов, чтобы они легко указывали, какие данные они содержат.

Python предоставляет модуль, известный как tempfile , который упрощает создание и обработку временных файлов. Этот модуль предоставляет несколько методов для создания временных файлов и каталогов различными способами. tempfile пригодится всякий раз, когда вы захотите использовать временные файлы для хранения данных в программе Python. Давайте рассмотрим несколько различных примеров того, как можно использовать модуль tempfile .

Создание временного файла

Предположим, вашему приложению нужен временный файл для использования в программе, то есть он создаст один файл, будет использовать его для хранения некоторых данных, а затем удалит его после использования. Для этого мы можем использовать функцию Temporary File () .

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

Давайте взглянем на приведенную ниже программу Python, чтобы увидеть, как она работает:

Он напечатает нижеприведенный вывод:

  1. Чтобы создать один временный файл в Python, вам нужно импортировать модуль tempfile .
  2. Как было объяснено выше, мы создали временный файл с помощью функции Temporary File () .
  3. Из выходных данных вы можете видеть, что созданный объект на самом деле не является файлом, это файлоподобный объект. И параметр mode (не показанный в нашем примере) созданного файла равен w+b , то есть вы можете читать и писать без закрытия.
  4. Созданный временный файл не имеет имени.
  5. Наконец, мы закрываем файл с помощью метода close () . Он будет уничтожен после того, как его закроют.

Создайте именованный временный файл

В нашем предыдущем примере мы видели, что временный файл, созданный с помощью функции Temporary File () , на самом деле является файлоподобным объектом без фактического имени файла. Python также предоставляет другой метод, NamedTemporaryFile() , для создания файла с видимым именем в файловой системе. Кроме указания имени для tempfile, NamedTemporaryFile() работает так же, как Temporary File() . Теперь давайте воспользуемся тем же приведенным выше примером для создания именованного временного файла:

Запуск этого кода приведет к печати вывода, аналогичного следующему:

Итак, на этот раз у созданного файла действительно есть имя. Преимущество NamedTemporaryFile() заключается в том, что мы можем сохранить имя созданных временных файлов и использовать их позже, прежде чем закрывать или уничтожать их. Если параметр delete имеет значение False , то мы можем закрыть файл без его уничтожения, что позволит нам снова открыть его позже.

Предоставление суффикса или префикса к имени

Иногда нам нужно добавить префикс или суффикс к имени временного файла. Это поможет нам идентифицировать все временные файлы, созданные нашей программой.

Запуск этого кода приведет к печати следующих выходных данных:

Таким образом, если мы передадим два дополнительных аргумента suffix и prefix функции NamedTemporaryFile () , она автоматически добавит их в начало и конец имени файла.

Поиск расположения временных файлов по умолчанию

Переменная tempfile.tempdir содержит расположение по умолчанию для всех временных файлов. Если значение tempdir равно None или unset, Python будет искать стандартный список каталогов и устанавливает tempdir в первое значение каталога, но только в том случае, если вызывающая программа может создать в нем файл. Ниже приведен список каталогов, которые он будет сканировать, в следующем порядке:

  1. Каталог, названный переменной окружения TMPDIR.
  2. Каталог, названный переменной среды TEMP.
  3. Каталог, названный переменной среды TMP
  4. Каталоги для конкретной платформы:
    1. На окнах, C:\TEMP, C:\TMP, \TEMP и \TMP, в том же порядке.
    2. На других платформах/tmp,/var/tmp и/usr/tmp расположены в том же порядке.

    Чтобы узнать расположение временных файлов по умолчанию, мы можем вызвать метод tempfile.gettempdir () . Он вернет значение tempdir , если это не так None . В противном случае он сначала будет искать местоположение каталога, используя шаги, упомянутые выше, а затем вернет его.

    Если вы запустите приведенную выше программу, она выведет результат, подобный следующему:

    Вы можете видеть, что первое местоположение временного каталога является системным местоположением каталога, а второе значение временного каталога совпадает с тем, которое мы определили.

    Чтение и запись данных из временных файлов

    Мы узнали, как создать временный файл, создать временный файл с именем и как создать временный файл с суффиксом и/или префиксом. Теперь давайте попробуем понять, как на самом деле читать и записывать данные из временного файла в Python.

    Чтение и запись данных из временного файла в Python довольно просты. Для записи вы можете использовать метод write () , а для чтения-метод read () . Например:

    Это выведет выходные данные как 'hello world!' так как метод write() принимает входные данные в байтах (отсюда и префикс b в строке).

    Если вы хотите записать текстовые данные во временный файл, вы можете использовать вместо этого метод writelines () . Для использования этого метода нам нужно создать tempfile с использованием режима w+t вместо режима по умолчанию w+b . Для этого в Temporary File () можно передать параметр mode param для изменения режима созданного временного файла.

    Создание временного каталога

    Если ваша программа имеет несколько временных файлов, может быть удобнее создать один временный каталог и поместить в него все ваши временные файлы. Чтобы создать временный каталог, мы можем использовать функцию Temporary Directory () . После того как все временные файлы будут закрыты, нам нужно удалить каталог вручную.

    Он напечатает нижеприведенный вывод:

    Создайте безопасный временный файл и каталог

    Используя mkstemp() , мы можем создать временный файл самым безопасным способом. Временный файл, созданный с помощью этого метода, доступен для чтения и записи только по идентификатору создающего пользователя. Мы можем передать аргументы prefix и suffix , чтобы добавить префикс и суффикс к созданному имени файла. По умолчанию он открывает файл в двоичном режиме. Чтобы открыть его в текстовом режиме, мы можем передать text=True в качестве аргумента функции. В отличие от Temporary File() , файл, созданный mkstemp () , не удаляется автоматически после его закрытия.

    Как вы можете видеть в приведенном ниже примере, пользователь несет ответственность за удаление файла.

    Подобно mkstemp() , мы можем создать временный каталог наиболее безопасным способом, используя метод mkdtemp () . И опять же, как и mkstemp() , он также поддерживает аргументы prefix и suffix для добавления префикса и суффикса к имени каталога.

    Вывод

    В этой статье мы изучили различные способы создания временных файлов и каталогов в Python. Вы можете использовать временные файлы в любой программе Python, которую вы хотите. Но просто убедитесь, что вы удалили его, если конкретный используемый метод не удаляет его автоматически сам по себе. Также имейте в виду, что поведение может отличаться в разных операционных системах, например, имена выходных каталогов и имена файлов.

    Все эти функции, которые мы объяснили выше, работают со многими различными аргументами, хотя мы не рассматривали подробно, какой тип аргументов принимает каждая функция. Если вы хотите узнать больше о модуле tempfile , вам следует ознакомиться с официальной документацией Python 3 .

    Использование модуля tempfile в Python

    Статьи

    В этой статье рассмотрим модуль из стандартной библиотеки для создания временных файлов и папок в Python.

    Введение

    Создание временного файла

    Вывод программы

    Здесь мы видим, как создать временный файл с помощью функции tempfile(). Сначала мы импортировали модуль tempfile, после чего определили переменную и использовали нашу функцию для создания временного файла. После чего мы использовали оператор print 2 раза. Первый, чтобы получить объект нашего файла, а второй, чтобы получить точное имя файла. Имя файла генерируется случайным образом и может варьироваться от пользователя к пользователю.

    Создание именованного временного файла

    Вывод программы

    Здесь мы создали именованный временный файл.

    Разница, которая вполне очевидна, заключается в том, что вместо метода TemporaryFile() мы использовали NamedTemporaryFile().

    В этом методе генерируется случайное имя для временного файла. Так же этот файл по умолчанию храниться в директории временных файлов вашей операционной системы.

    Создание временного каталога

    Вывод программы

    Здесь мы создали каталог. Как мы видим, синтаксис изменился всего на один вызов по сравнению с тем, что мы использовали для создания временного файла. Здесь вместо метода TemporaryFile() мы использовали TemporaryDirectory().

    Чтение и запись во временный файл

    Вывод программы

    Далее вызывается функция поиска, которая устанавливает указатель в файле на его начало. Затем мы использовали функцию чтения, которая читает содержимое временного файла.

    Альтернативный способ с использованием mkstemp

    Только пользователь, создавший временный файл, может добавлять в него данные. Кроме того, этот файл автоматически не удаляется при закрытии.

    Вывод программы

    Здесь мы создали временный файл с помощью метода mkstemp(). Изменений относительно предыдущего примера минимально, вместо TemporaryFile() мы использовали mkstemp(), а все остальное осталось прежним.

    Заключение

    Сегодня мы рассмотрели как используется и для чего нужна библиотека tempfile в Python. Если у вас есть дополнительные вопросы, не стесняйтесь задавать их в комментариях.

    Модуль создает временные файлы и каталоги. Он работает на всех поддерживаемых платформах. TemporaryFile , NamedTemporaryFile , TemporaryDirectory и SpooledTemporaryFile - это высокоуровневые интерфейсы, которые обеспечивают автоматическую очистку и могут быть используемый в качестве менеджеров контекст. mkstemp() и mkdtemp() - это низкоуровневые функции, требующие ручной очистки.

    Все вызываемые пользователем функции и конструкторы принимают дополнительные аргументы, позволяющие непосредственно управлять расположением и именем временных файлов и каталогов. Имена файлов, используемый этим модулем, содержат строка случайных символов, что позволяет безопасно создавать эти файлы в общих временных каталогах. Для поддержания обратной совместимости порядок аргументов несколько странен; для ясности рекомендуется использовать ключевой аргументы.

    Модуль определяет следующие вызываемые пользователем элементы:

    tempfile. TemporaryFile ( mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, *, errors=None ) ¶

    Возвращает файлоподобный объект , который можно используемый как временную область хранения. Файл создается безопасно, используя те же правила, что и mkstemp() . Он будет уничтожен, как только будет закрыт (включая неявное закрытие, когда объект собран мусором). В Unix запись каталога для файла либо не создается вообще, либо удаляется сразу после создания файла. Другие платформы не поддерживают это; код не следует полагаться на временный файл, созданный с помощью этой функции и имеющий или не имеющий видимое имя в файловой системе.

    Результирующий объект можно используемый как диспетчер контекст (см. Примеры ). По завершении контекст или уничтожения объекта файла временный файл будет удален из файловой системы.

    Параметр mode по умолчанию имеет значение 'w+b' , чтобы созданный файл можно было прочитать и записать без закрытия. Бинарный режим используемый так, чтобы вести себя последовательно на всех платформах без учета хранимых данных. buffering, encoding, errors и newline интерпретируются как open() .

    Параметры dir, prefix и suffix имеют то же значение и значения по умолчанию, что и для mkstemp() .

    Объект возвращенный является истинным файловым объектом на платформах POSIX. На других платформах это файлообразный объект, file атрибут которого является базовым истинным файловым объектом.

    Флаг os.O_TMPFILE используемый, если он доступен и работает (для Linux требуется ядро Linux 3.11 или более поздней версии).

    Поднимает событие аудита tempfile.mkstemp с аргументом fullpath .

    Изменено в версии 3.5: Теперь используется флаг os.O_TMPFILE , если доступен.

    Изменено в версии 3.8: Добавлен errors параметр.

    tempfile. NamedTemporaryFile ( mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True, *, errors=None ) ¶

    Функция работает точно так же, как TemporaryFile() , за исключением того, что файл гарантированно имеет видимое имя в файловой системе (в Unix запись каталога не является несвязанной). Это имя можно получить из name атрибут файлового объекта возвращенный. Может ли имя быть используемый для открытия файла во второй раз, в то время как именованный временный файл все еще открыт, варьируется между платформами (это может быть так используемый в Unix; в Windows NT или более поздней версии). Если delete имеет значение true (по умолчанию), файл удаляется сразу после закрытия. Объект возвращенный всегда является похожим на файл объектом, file атрибут которого является базовым объектом true file. Этот файлообразный объект можно используемый в with инструкция, как и обычный файл.

    Поднимает событие аудита tempfile.mkstemp с аргументом fullpath .

    Изменено в версии 3.8: Добавлен параметр errors.

    tempfile. SpooledTemporaryFile ( max_size=0, mode='w+b', buffering=-1, encoding=None, newline=None, suffix=None, prefix=None, dir=None, *, errors=None ) ¶

    Функция работает точно так же, как TemporaryFile() , за исключением того, что данные перегружаются в память до тех пор, пока размер файла не превысит max_size, или пока не будет вызван метод fileno() файла, в этот момент содержимое записывается на диск, и операция продолжается так же, как и TemporaryFile() .

    Результирующий файл имеет один дополнительный метод, rollover() , который вызывает перемещение файла в файл на диске независимо от его размера.

    Объект возвращенный - это файлообразный объект, _file атрибут которого является либо объектом io.BytesIO , либо объектом io.TextIOWrapper (в зависимости от того, был ли указан двоичный или текстовый mode), либо объектом true, в зависимости от того, был ли вызван rollover() . Этот файлообразный объект можно используемый в with инструкция, как и обычный файл.

    Изменено в версии 3.3: метод усечения теперь принимает аргумент size .

    Изменено в версии 3.8: Добавлен errors параметр.

    tempfile. TemporaryDirectory ( suffix=None, prefix=None, dir=None ) ¶

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

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

    Каталог можно явно очистить, вызвав метод cleanup() .

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

    Добавлено в версии 3.2.

    tempfile. mkstemp ( suffix=None, prefix=None, dir=None, text=False ) ¶

    Создает временный файл максимально безопасным способом. В создании файла отсутствуют условия гонки, предполагающие, что платформа правильно реализует флаг os.O_EXCL для os.open() . Файл доступен для чтения и записи только при создании идентификатора пользователя. Если платформа использует биты разрешения, чтобы указать, является ли файл исполняемым, файл исполняется никем. Файловый дескриптор не наследуется дочерними процессами.

    В отличие от TemporaryFile() , пользователь mkstemp() несет ответственность за удаление временного файла после его завершения.

    Если suffix не None , имя файла будет заканчиваться этим суффиксом, в противном случае суффикс не будет. mkstemp() не помещает точку между именем файла и суффиксом; если он вам нужен, положите его в начале suffix.

    Если prefix не None , имя файла будет начинаться с этого префикса; в противном случае префикс по умолчанию будет используемый. По умолчанию используется значение возвращает значение gettempprefix() или gettempprefixb() .

    Если dir не None , файл будет создан в этой папке; в противном случае используемый каталог по умолчанию. Каталог по умолчанию выбирается из списка, зависящего от платформы, но пользователь приложения может управлять расположением каталога, задавая переменные среды TMPDIR, TEMP или TMP. Таким образом, нет гарантии, что сгенерированное имя файла будет иметь какие-либо хорошие свойства, например, не требовать кавычек при передаче внешним командам через os.popen() .

    Если какие-либо из suffix, prefix и dir не являются None , они должны быть одного типа. Если это байты, возвращенный имя будет байтами вместо строки. Если требуется принудительно ввести байты возвращает значение с другим поведением по умолчанию, передайте suffix=b'' .

    Если задано значение text и true, файл открывается в текстовом режиме. В противном случае (по умолчанию) файл открывается в двоичном режиме.

    mkstemp() возвращает кортеж, содержащий дескриптор уровня ОС, в открытый файл (как будет возвращенный os.open() ) и абсолютное имя пути этого файла в таком порядке.

    Поднимает событие аудита tempfile.mkstemp с аргументом fullpath .

    Изменено в версии 3.5: suffix, prefix и dir теперь могут подаваться в байтах для получения байтов возвращает значение. До этого разрешалась только стр. suffix и prefix теперь принять и по умолчанию None , чтобы вызвать значение соответствующего используемый по умолчанию.

    Изменено в версии 3.6: Теперь параметр dir принимает путеподобный объект .

    Создает временный каталог максимально безопасным способом. В созданном каталоге отсутствуют условия гонки. Каталог доступен для чтения, записи и поиска только при создании идентификатора пользователя.

    Пользователь mkdtemp() несет ответственность за удаление временного каталога и его содержимого по завершении работы с ним.

    Аргументы prefix, suffix и dir те же, что и для mkstemp() .

    mkdtemp() возвращает абсолютное имя пути нового каталога.

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

    Изменено в версии 3.5: suffix, prefix и dir теперь могут подаваться в байтах для получения байтов возвращает значение. До этого разрешалась только стр. suffix и prefix теперь принять и по умолчанию None , чтобы вызвать значение соответствующего используемый по умолчанию.

    Изменено в версии 3.6: Теперь параметр dir принимает путеподобный объект .

    Возвращает имя каталога, используемый для временных файлов. Это определяет значение по умолчанию для аргумента dir для всех функций в этом модуле.

    Python ищет стандартный список каталогов для поиска каталога, в котором вызывающий пользователь может создавать файлы. Список:

    1. Каталог, именованный переменной среды TMPDIR .
    2. Каталог, именованный переменной среды TEMP .
    3. Каталог, именованный переменной среды TMP .
    4. Местоположение для конкретной платформы:
      • В Windows каталоги C:\TEMP , C:\TMP , \TEMP и \TMP в таком порядке.
      • На всех остальных платформах каталоги /tmp , /var/tmp и /usr/tmp в таком порядке.
    5. В крайнем случае, текущий рабочий каталог.

    Результат этого поиска кэшируется, см. описание tempdir ниже.

    То же самое, что и gettempdir() , но возвращает значение в байтах.

    Добавлено в версии 3.5.

    Возвращает создания временных файлов используемый префикс имени файла. Он не содержит компонент каталога.

    То же самое, что и gettempprefix() , но возвращает значение в байтах.

    Добавлено в версии 3.5.

    Модуль использует глобальную переменную для хранения имени каталога используемый для временных файлов, возвращенный gettempdir() . Он может быть установлен непосредственно для переопределения процесса выбора, но это не рекомендуется. Все функции в этом модуле имеют dir аргумент, который можно используемый для указания каталога, и это рекомендуемый подход.

    Если задано значение значение, отличное от None , эта переменная определяет значение по умолчанию для аргумента dir к функциям, определенным в этом модуле.

    Если tempdir является None (по умолчанию) при любом вызове любой из вышеперечисленных функций, за исключением того, gettempprefix() он инициализируется в соответствии с алгоритмом, описанным в gettempdir() .

    Примеры¶

    Ниже приведены некоторые примеры типичного использования модуля tempfile :

    Устаревшие функции и переменные¶

    Историческим способом создания временных файлов было сначала создание имени файла с помощью функции mktemp() , а затем создание файла с использованием этого имени. К сожалению, это не безопасно, поскольку другой процесс может создать файл с таким именем в период между вызовом mktemp() и последующей попыткой создать файл первым процессом. Решение состоит в объединении этих двух шагов и немедленном создании файла. Этот подход используемый mkstemp() и другие функции, описанные выше.

    Не рекомендуется, начиная с версии 2.3: Вместо этого используйте mkstemp() .

    Возвращает абсолютное имя пути файла, который не существовал на момент выполнения вызова. Аргументы prefix, suffix и dir аналогичны аргументам mkstemp() , за исключением того, что имена файлов байтов, suffix=None и prefix=None не поддерживаются.

    Использование этой функции может привести к появлению дырки в безопасности в программе. К тому времени, когда вы будете делать что-либо с именем файла, который он возвращает, кто-то другой, возможно, избил вас до удара. Использование mktemp() можно легко заменить на NamedTemporaryFile() , передав ему параметр delete=False :

    В стандартной библиотеке Python есть модуль tempfile, который содержит классы и методы для корректной работы с временными файлами и директориями.

    Сигнатура: tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None)

    Эта функция создает временный файл в системной директории (разная в различных ОС) и возвращает файлоподобный объект (file-like object). Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера. Также другие процессы и приложения не смогут получить доступ к этому временному файлу.

    print("Creating one temporary file. ")

    print("Closing the temp file")

    Creating one temporary file.

    Created file is: <_io.BufferedRandom name=4>

    Name of the file is: 4

    Closing the temp file

    Сигнатура: tempfile.NamedTemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None, delete=True)

    В прошлом примере было показано, что функция tempfile.TemporaryFile() возвращает файлоподобный объект без имени, но в Python есть и другая функция, которая позволяет создать именованный временный файл.

    print("Creating one named temporary file. ")

    print("Created file is:", temp)

    print("Name of the file is:", temp.name)

    print("Closing the temp file")

    Creating one named temporary file.

    Created file is: <tempfile._TemporaryFileWrapper object at 0x103f22ba8>

    Name of the file is: /var/folders/l7/80bx27yx3hx_0_p1_qtjyyd40000gn/T/tmpa3rq8lon

    Closing the temp file

    Как мы видим, у созданного файла есть имя. Фишка в том, что мы можем сохранить имя временного файла и использовать после закрытия файла или завершения программы (для этого есть аргумент delete=False ).

    Сигнатура: tempfile.TemporaryDirectory(suffix=None, prefix=None, dir=None)

    Эта функция создает временную директорию. Это может быть удобно, если нужно сохранить несколько временных файлов.

    with tempfile.TemporaryDirectory() as tmpdirname:

    print('Created temporary directory:', tmpdirname)

    Created temporary directory: /var/folders/l7/80bx27yx3hx_0_p1_qtjyyd40000gn/T/tmpn_ke7_rk

    Читайте также: