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

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

Tempfile — это модуль из стандартной библиотеки, используемый для создания временных файлов и каталогов. Такие файлы очень удобны, когда мы не хотим хранить данные постоянно. Если мы работаем с массивными данными, то эти файлы создаются с уникальными именами и хранятся в месте по умолчанию, варьирующемся от вашей операционной системы. Например, в Windows папка temp находится в каталоге %ИМЯПОЛЬЗОВАТЕЛЯ%/AppData/Local/Temp, в то время как в иных системах папка временных файлов находится в других местах.

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

import tempfile

file_temp = tempfile.TemporaryFile()
print(file_temp)
print(file_temp.name)

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

<_io.BufferedRandom name=4>
4

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

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

import tempfile

file_temp = tempfile.NamedTemporaryFile()
print(file_temp)
print(file_temp.name)

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

<tempfile._TemporaryFileWrapper object at 0x7f8f439eefa0>
/var/folders/22/lrkx415953qbgh17tfbdhbvw0000gn/T/tmp5hef4sd5

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

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

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

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

import tempfile

dir_temp = tempfile.TemporaryDirectory()
print(dir_temp)

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

<TemporaryDirectory '/var/folders/22/lrkx415953qbgh17tfbdhbvw0000gn/T/tmpxb_irujq'>

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

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

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

import tempfile

file_tmp = tempfile.TemporaryFile()
file_tmp.write(b"Testing write and read file")
file_tmp.seek(0)
print(file_tmp.read())
file_tmp.close()

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

b'Testing write and read file'

Выше мы видим, как читать и записывать во временные файлы. Здесь мы впервые создали временный файл. После чего мы использовали функцию записи, которая используется для записи данных во временный файл. Наверное, вам интересно, что там делает ‘b’. Дело в том, что по умолчанию временные файлы берут на вход данные, и ‘b’ преобразует строку в двоичный файл.

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

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

Так же у меня есть группа ВКонтакте @yegorovegor. Обязательно подпишись!

Функция tempfile() великолепна, но в этом разделе мы рассмотрим одну из альтернатив. mkstemp() — это функция, которая делает все то же самое, но в дополнение к этому, она обеспечивает безопасность.

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

import tempfile

file_tmp = tempfile.mkstemp()
print(file_tmp)

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

(4, '/var/folders/22/lrkx415953qbgh17tfbdhbvw0000gn/T/tmp32fn1fjh')

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

close

Изучаешь Python?

Оформи подписку и получи моментальный доступ к новым публикациям

Обязательно прочитайте другие статьи посвященные языку программирования Python


GeekUniversity - обучение до уровня Middle с гарантированным трудоустройством

Добавить комментарий

Ваш адрес email не будет опубликован