Если я предполагаю, что все они находятся в folder
и что он содержит только эти изображения (и ничего больше), то это должно работать в одной сложной строке:
import os
[os.remove(os.path.join(folder, img)) for i, img in enumerate(sorted(os.listdir(folder))) if i % 5 != 0]
Это должно работать независимо от того,как они названы и будут сохранять только каждый 5-й файл (при необходимости измените номер 5).Однако будьте очень осторожны , чтобы указать правильную папку и убедиться, что она не содержит ничего, что вы не хотите удалять.Если это так, сначала отфильтруйте список перед удалением.
Если вас не устраивают списки или код, который так нечитабелен (что вроде как), более длинная версия выше:
import os
image_list = sorted(os.listdir(folder))
for i, img in enumerate(image_list):
if i % 5 != 0:
img_path = os.path.join(folder,img)
os.remove(img_path)
Также, согласно вашим комментариям, я добавил функцию sorted
, чтобы гарантировать, что порядок сохраняется в алфавитном порядке при удалении каждого 5-го элемента