Как удалить файлы по имени в 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)

Заключительная проверка кода — как удалить файлы по имени в 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!