Модуль tempfile в Python, временные файлы и каталоги
Создание защищенных временных файлов и каталогов для программы
Модуль tempfile создает временные файлы и каталоги. Работает на всех поддерживаемых платформах. Модуль определяет несколько конструкторов высокого уровня, которые обеспечивают автоматическую очистку и могут использоваться в качестве менеджеров контекста. Функции tempfile.mkstemp() и tempfile.mkdtemp() являются функциями более низкого уровня, которые требуют ручной очистки.
Приложения, которым требуются временные файлы для хранения данных, без необходимости делиться этим файлом с другими программами, должны использовать функцию tempfile.TemporaryFile() для создания файлов. Функция создает файл и на платформах, где это возможно, немедленно отменяет связь с ним. Это делает невозможным для другой программы найти или открыть файл, поскольку в таблице файловой системы нет ссылки на него.
Когда требуется несколько временных файлов, может быть удобнее создать один временный каталог с помощью tempfile.TemporaryDirectory() и открыть все файлы в этом каталоге.
Все вызываемые пользователем функции и конструкторы принимают дополнительные аргументы, которые позволяют напрямую контролировать расположение и имя временных файлов и каталогов. Имена файлов, используемые этим модулем, содержат строку случайных символов, которая позволяет безопасно создавать эти файлы в общих временных каталогах. Для обеспечения обратной совместимости порядок аргументов несколько странный. Для ясности рекомендуется использовать ключевые аргументы.
Примеры:
Вот несколько примеров типичного использования модуля tempfile :
>>> import tempfile # Создать временный файл и # записать в него некоторые данные >>> fp = tempfile.TemporaryFile() >>> fp.write(b'Hello world!') # Читать данные из файла >>> fp.seek(0) >>> fp.read() # b'Hello world!' # Закройте файл, он будет удален >>> fp.close()
Создать временный файл, используя менеджер контекста
>>> with tempfile.TemporaryFile() as fp: . fp.write(b'Hello world!') . fp.seek(0) . fp.read() # b'Hello world!' >>> # Файл закрыт и удален
Создать временный каталог с помощью диспетчера контекста
>>> with tempfile.TemporaryDirectory() as tmpdirname: . print('created temporary directory', tmpdirname) >>> # Каталог и содержимое были удалены
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Класс TemporaryFile() модуля tempfile
- Функция NamedTemporaryFile() модуля tempfile
- Функция SpooledTemporaryFile() модуля tempfile
- Функция TemporaryDirectory() модуля tempfile
- Функция mkstemp() модуля tempfile
- Функция mkdtemp() модуля tempfile
- Вспомогательные функции модуля tempfile
Python 3 — Как просканировать папку /tmp, найти в ней файлы, которые начинаются с «x» и удалить их? [закрыт]
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.
Закрыт 2 года назад .
Я делаю программу для очистки кеша / мусора. Она будет удалять всё, что начинается с:
1) Папки ".com.google.Chrome." 2) Файлы "config-err" 3) Папка "mintUpdate" 4) Файлы-изображения "xapp-tmp-" 5) Папки "ssh-"
Давайте код только для Linux, у меня нет Windows.
Отслеживать
задан 7 янв 2022 в 12:49
Brainsluggy Brainsluggy
106 12 12 бронзовых знаков
и что вы уже сделали? что не получилось?
7 янв 2022 в 12:54
Я не знаю как сделать, как раз пытаюсь найти ответ. Но его нет
7 янв 2022 в 12:56
на что нет ответа — как получить список файлов в папке? гугл в помощь — миллион страниц. выбирайте и пробуйте
7 янв 2022 в 13:00
@splash58 ответа нет на то, почему за него это никто еще не сделал
7 янв 2022 в 13:18
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Во-первых ВСЕ нужные функции доступны для поиска в интернете.
import os tmp_path='/tmp' os.chdir(tmp_path) # Переходим в tmp all_dirs_and_files = os.listdir() # Получаем список файлов patterns = ['.com.goole.Chrome.', 'config-err', 'mintUpdate', 'xapp-tmp-', 'ssh-'] # Здесь список проверяемых паттернов for f_or_d in all_dirs_and_files: # Перебираем все папки и файлы flag = False for patt in patterns: if f_or_d.startswith(patt): # Проверяем на соответствие с каждым паттерном flag = True if flag: # Если подошло под паттерн if os.path.isfile(f_or_d): # Проверяем файл ли это os.remove(f_or_d) # Удаляем файл else: os.rmdir(f_or_dir) # Иначе удаляем папку
Прочти некоторые списки полезных функций:
UPDATE
Сразу не заметил что некоторые паттерны под папки, некоторые только под файлы.
Вот улучшенный код
import os tmp_path='/tmp' os.chdir(tmp_path) # Переходим в tmp all_dirs_and_files = os.listdir() # Получаем список файлов patts_d = ['.com.goole.Chrome.', 'mintUpdate', 'ssh-'] # Здесь список проверяемых паттернов для директорий patts_f = ['config-err', 'xapp-tmp-'] for f_or_d in all_dirs_and_files: # Перебираем все папки и файлы if os.path.isfile(f_or_d): # Проверяем файл ли это flag = False for patt in patts_f: if f_or_d.startswith(patt): # Проверяем на соответствие с каждым паттерном flag = True if flag: os.remove(f_or_d) else: flag = False for patt in patts_d: if f_or_d.startswith(patt): # Проверяем на соответствие с каждым паттерном flag = True if flag: os.rmdir(f_or_d)
Вспомогательные функции модуля tempfile
Функция tempfile.gettempdir() возвращает имя каталога как строку, используемого для временных файлах. Это определяет значение по умолчанию для аргумента dir для всех функций в этом модуле.
Python ищет стандартный список каталогов, чтобы найти тот, в котором вызывающий пользователь может создавать файлы.
- Каталог, переменной среды TMPDIR.
- Каталог, переменной среды TEMP.
- Каталог, переменной среды TMP.
- Местоположение для конкретной платформы:
- В Windows каталоги C:\TEMP, C:\TMP, \TEMP и \TMP в указанном порядке.
- На всех других платформах каталоги /tmp, /var/tmp и /usr/tmpв указанном порядке.
Результат этого поиска кэшируется, смотрите описание tempfile.tempdir .
>>> import tempfile >>> tempfile.gettempdir() # '/tmp'
tempfile.gettempdirb() :
Метод tempfile.gettempdirb() то же, что tempfile.gettempdir() , но только возвращаемое значение в байтах.
>>> import tempfile >>> tempfile.gettempdirb() # b'/tmp'
tempfile.gettempprefix() :
Метод tempfile.gettempprefix() возвращает префикс имени файла как строку, используемый для создания временных файлов. Значение не содержит компонент каталога.
>>> import tempfile >>> tempfile.gettempprefix() # 'tmp'
tempfile.gettempprefixb() :
Метод tempfile.gettempprefixb() то же, что tempfile.gettempprefix() , но только возвращаемое значение в байтах.
>>> import tempfile >>> tempfile.gettempprefixb() # b'tmp'
tempfile.tempdir :
Если tempfile.tempdir задано значение отличное от None , то эта она определяет значение по умолчанию для аргумента dir для функций, определенных в этом модуле.
>>> import tempfile >>> tempfile.tempdir # '/tmp'
Если tempdir=None (по умолчанию) при любом вызове любой из вышеперечисленных функций, кроме tempfile.gettempprefix() , он инициализируется в соответствии с алгоритмом, описанным в tempfile.gettempdir() .
Модуль tempfile использует глобальную переменную для хранения имени каталога, используемого для временных файлов, возвращаемых tempfile.gettempdir() . Переменная может быть установлена непосредственно, чтобы переопределить процесс выбора, но это не рекомендуется. Все функции в этом модуле принимают аргумент dir , который можно использовать для указания каталога, и это рекомендуемый подход.
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Класс TemporaryFile() модуля tempfile
- Функция NamedTemporaryFile() модуля tempfile
- Функция SpooledTemporaryFile() модуля tempfile
- Функция TemporaryDirectory() модуля tempfile
- Функция mkstemp() модуля tempfile
- Функция mkdtemp() модуля tempfile
- Вспомогательные функции модуля tempfile
Tmp python что это
Текстовые метки: python, tempfile, temp, tmp, temporary, TemporaryFile, NamedTemporaryFile, SpooledTemporaryFile, TemporaryDirectory, mkstemp, mkdtemp
Раздел: Информационные технологии — Python — Основы языка
Запись: and-semakin/mytetra_data/master/base/15354433241hj0ebwdqi/text.html на raw.githubusercontent.com
В стандартной библиотеке Python есть модуль tempfile, который содержит классы и методы для корректной работы с временными файлами и директориями.
Сигнатура: 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
print(«Created file is:», temp) #3
print(«Name of the file is:», temp.name) #4
print(«Closing the temp file»)
Creating one temporary file.
Created file is:
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:
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)
# Both the directory and its contents have been deleted
Created temporary directory: /var/folders/l7/80bx27yx3hx_0_p1_qtjyyd40000gn/T/tmpn_ke7_rk
- PEP8 — общепринятый стиль кода на языке Python
- Асинхронное программирование в Python
- Типизация (аннотация типов) в Python
- Распространенные операции со словарями (dict) в Python
- Управление аттрибутами объектов в Python
- Распространенные операции со списками (list) в Python
- Работа с временными файлами в Python
- Распространенные операции над множествами (set) в Python