MyTetra Share
Делитесь знаниями!
Работа с временными файлами в Python
28.08.2018
13:02
Автор: br0ke
Текстовые метки: python, tempfile, temp, tmp, temporary, TemporaryFile, NamedTemporaryFile, SpooledTemporaryFile, TemporaryDirectory, mkstemp, mkdtemp
Раздел: Информационные технологии - Python - Основы языка

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


tempfile.TemporaryFile()


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


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


import tempfile #1


print("Creating one temporary file...")


temp = tempfile.TemporaryFile() #2


try:

print("Created file is:", temp) #3

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

finally:

print("Closing the temp file")

temp.close() #5


Вывод:


$ python3 temp-file.py

Creating one temporary file...

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

Name of the file is: 4

Closing the temp file


tempfile.NamedTemporaryFile()


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


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


import tempfile


print("Creating one named temporary file...")


temp = tempfile.NamedTemporaryFile()


try:

print("Created file is:", temp)

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

finally:

print("Closing the temp file")

temp.close()


Вывод:


$ python3 named-temp-file.py

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()


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


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


import tempfile


with tempfile.TemporaryDirectory() as tmpdirname:

print('Created temporary directory:', tmpdirname)


# Both the directory and its contents have been deleted


Вывод:


$ python3 mk-dir-temp-file.py

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



 
MyTetra Share v.0.52
Яндекс индекс цитирования