Как правильно удалять и сохранять файлы изображений в python flask
Формируются 2 кортежа с именами файлов.
1 кортеж — имена файлов для удаления (получены из БД).
2 кортеж — имена файлов для сохранения (получены из формы).
Я пытаюсь так:
import os old_name = (get_image_name.img_1, get_image_name.img_2, get_image_name.img_3) new_name = (request.files['img_1'], request.files['img_2'], request.files['img_3']) for i in range(3): os.remove(os.path.join(app.config['UPLOAD_FOLDER'] + 'test_folder/', old_name[i])) new_name[i].save(os.path.join(app.config['UPLOAD_FOLDER'] + 'test_folder/', new_name[i].filename))
В таком виде, если требуется удалить 2 файла и при этом сохранить 3 файла, то 3й файл не сохраняется.
Хотя если требуется удалить 2 файла и сохранить 2, или удалить 3 файла и сохранить 2, то перезапись происходит корректно.
Как сделать так, что бы удалялось и сохранялось любое количество файлов?
Как удалить файлы по имени в Python?


При работе с большим количеством данных может возникнуть необходимость удалить некоторые файлы прямо из питоновской программы! Например, из папки с фотографиями собак нужно удалить несколько случайно попавших в датасет фотографий с посторонними предметами. Как они там оказались — вопрос риторический, а вот как удалить файлы по имени в Python прямиком из программы — уже вопрос насущный, который мы сейчас решим!
Описанный ниже способ отлично работает в Python, начиная с 3.4 версии!
Исходные даннные:
1. Датасет с фотографиями собак, среди которых находится несколько лишних фото:

2. Список с именами лишних фото del_list = [«4.jpg», «9.jpg», «14.jpg»]
Что нужно сделать?
Необходимо удалить из исходного датасета все фото с названиями, перечисленными в списке del_list.
Решение:
1. Определим путь к рабочей директории
Пусть все фото располагаются в папке под названием «photos», а питоновский файл с кодом находится в одной директории с папкой «photos».
Тогда абсолютный путь к папке «photos» будет иметь вид — pathlib.Path.cwd():
# импортируем модуль pathlib для работы с путями к файлам import pathlib # импорт класса Path модуля pathlib from pathlib import Path # получаем объект пути с текущим каталогом photos_path = pathlib.Path.cwd()
В результате работы метода pathlib.Path.cwd() в переменной photos_path будет сохранен объект абсолютного пути к директории с текущим питоновским файлом и папкой photos.
2. Определим список с именами лишних файлов
import pathlib from pathlib import Path photos_path = pathlib.Path.cwd() # Определим список с именами лишних файлов del_list = ['4.jpg', '9.jpg', '14.jpg']
3. Реализуем поочередное удаление файлов
Пробегая по списку del_list в цикле for, поочередно проверим, существует ли в текущей директории в папке «photos» файл с указанным именем. Если такой файл существует, то удалим его с помощью метода Path.unlink() и выведем сообщение об успешном удалении. В противном случае, если файл с таким именем не найден, выведем сообщение о его отсутствии:
import pathlib from pathlib import Path photos_path = pathlib.Path.cwd() Определим список с именами лишних файлов del_list = ['4.jpg', '9.jpg', '14.jpg'] # поочередно проходим по элементам списка del_list for file_name in del_list: # определяем путь к текущему файлу с именем file_name file_path = Path(photos_path, 'photos', file_name) # если файл по пути file_path существует, if Path.exists(file_path): # удаляем его и выводим сообщение об успешном удалении Path.unlink(file_path) print('Файл успешно удален: ' + str(file_path)) # если файла, на который указывает путь file_path, не существует, else: # выводим сообщение об отсутствии файла print('Нет такого файла: ' + str(file_path))
Рассмотрим приведенный выше код немного подробнее:
В этом небольшом куске кода мы использовали:
1. Экземпляр класса Path. В нашем случае объект класса Path, хранящийся в переменной file_path, содержит абсолютный путь до файла с именем file_name. Так как файл с кодом расположен в той же директории, что и папка photos со всеми фотографиями, то путь к нужному файлу будет иметь вид:
абсолютный_путь_к_директории_с_кодом_и_папкой_photos\'photos'\'имя_файла_который_нужно_удалить.jpg'
При создании объекта Path достаточно лишь перечислить части пути к файлу через запятую:
file_path = Path(абсолютный_путь_к_директории_с_кодом_и_папкой_photos, 'photos', 'имя_файла_который_нужно_удалить.jpg')
или (что идентично):
file_path = Path(photos_path, 'photos', file_name),
если photos_path равен абсолютному пути к директории с кодом и папкой photos, а file_name содержит имя файла, который нужно удалить.
В результате получим переменную file_path, содержащую абсолютный путь до файла с именем file_name.
2. Метод exists() класса Path.
Метод-разведчик, проверяющий, существует ли переданный в качестве параметра путь. Возвращает True или False в зависимости от того, будет ли найден указанный путь. Таким образом, выражение:
Path.exists(file_path)
вернет True, если найдет файл по адресу file_path, в противном случае вернет False.
3. Метод unlink() класса Path
Метод, позволяющий удалить файл. В качестве параметра методу unlink() необходимо передать путь к файлу, подлежащему удалению. В приведенном ниже примере будет удален файл, расположенный по пути file_path.
Path.unlink(file_path)
![]()
У нас появился Telegram-канал для изучающих Python! Подписывайтесь по ссылке: «Кодим на Python! Вместе «питонить» веселее!
Заключительная проверка кода — как удалить файлы по имени в Python:
Ниже размещен полный текст с кодом:
# импортируем модуль pathlib для работы с путями к файлам import pathlib # импорт класса Path модуля pathlib from pathlib import Path # получаем объект пути с текущим каталогом photos_path = pathlib.Path.cwd() # Определим список с именами лишних файлов del_list = ['4.jpg', '9.jpg', '14.jpg'] # поочередно проходим по элементам списка men_list for file_name in del_list: # определяем путь к текущему файлу с именем file_name file_path = Path(photos_path, 'photos', file_name) # если файл по пути file_path существует, if Path.exists(file_path): # удаляем его и выводим сообщение об успешном удалении Path.unlink(file_path) print('Файл успешно удален: ' + str(file_path)) # если файла, на который указывает путь file_path, не существует, else: # выводим сообщение об отсутствии файла print('Нет такого файла: ' + str(file_path))
Для успешной работы размещенного выше кода нужно, чтобы питоновский файл с кодом был расположен в одной директории с папкой photos!
python удалить файл асинхронно
второй день изучаю питон.
есть у меня директория, куда падают файлики и файлики нужно после прочтения сжечь удалить
но возникают ситуации, когда те, кто файлики пишут — тупят и мне нужно делать таймаут перед повторной попыткой удалить
дело в том, что time.sleep() тормозит весь поток и я решил что поможет threading
import threading import time some_path = '/foo/bar' def delete_file (arg, count=1): print str(count)+ ' try delete ' + some_path time.sleep(1) if count < 10: count += 1 recall = threading.Thread(target=delete_file, args=[arg, count]) recall.start() return 1 else: print 'too many tries' return 1 delete_file(some_path)
есть ли best practices по удалению файликов?

system-root ★★★★★
14.04.15 11:08:16 MSK
Как правильно удалить по маске файлы?

Как удалить файлы из папки по маске?
Всем здравствуйте. Нужно удалить из папки C:\Dir все файлы с указанным расширением, например .
Как скопировать/удалить файлы в директории по маске?
Добрый день. Подскажите, пожалуйста, как можно скопировать-удалить (переместить) файлы _по маске_.
Как удалять файлы по сети по маске?
Добрый день! Прошу помочь скриптом, который удалит в сетевой папке все файлы.

Как скопировать файлы по маске в папку?
Люди, помогите решить задачу: из задаваемой пользователем папки нужно скопировать все файлы по.
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
Папки рекурсивно обходить надо. Пиши функцию. На вход - путь. Если по пути файл - удаляем, если папка, вызываем эту же функцию с путем этой папки. И т.д.
4751 / 2643 / 547
Регистрация: 07.11.2019
Сообщений: 4,359
1 2 3 4 5
import glob import os mp3=glob.glob('**/*.mp3', recursive=True) for name in mp3: os.remove(name)
![]()
2679 / 1585 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1
Python_Newbie,
1 2 3 4 5 6 7 8 9
import os directory = "." for root, dirs, files in os.walk(directory): for filename in files: fullpath = os.path.join(root, filename) if os.path.isfile(fullpath) and filename.endswith(".mp3"): os.remove(fullpath)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как искать файлы по заданной маске?
есть скрипт #! /usr/bin/ksh find . -name $1 -type f -printнужно вызвать его со следующим.
Как искать файлы по маске, создавая их резервные копии?
Вот задали скрипт написать, но в этом вообще не шарю( сдавать прям скоро, надеюсь найдутся люди.
Как скачать файлы с FTP-сервера по маске и расписанию?
Задача: каждые полчаса соединяться с ФТП сервером (логин, пароль, не пассивный режим), из.
Как удалять файлы по маске (сложное сравнение и поиск)
Добрый день! Помогите со скриптом. Имена файлов могут быть как с пробелами, так и без, могут быть.
Как удалить группу файлов по маске?
Что-то типа rm *_ccc_*.mp3 Добавлено через 6 часов 40 минут QDir dir(path_tmp);.