Как удалить файлы python
Перейти к содержимому

Как удалить файлы python

  • автор:

Как правильно удалять и сохранять файлы изображений в 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. Датасет с фотографиями собак, среди которых находится несколько лишних фото:

удалить файлы по имени в Python

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!

Эксперт PythonЭксперт Java

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)

Эксперт Python

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);.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *