Это может вам помочь. Сначала он получает список всех каталогов, а затем удаляет случайные файлы, чтобы получить только n файлов. Примечание: path_to_all_images_folder должен быть объявлен
import os
import random
def keep_n_dir(directory, n):
files = os.listdir(directory) #You retrieve the list of names of files
if len(files) > n: #If you already have less than n files, you do nothing
diff = len(files) - n
files_to_delete = random.sample(files, k=diff) #Random sample files to delete
for file in files_to_delete:
os.remove(os.path.join(directory, file)) #Delete additional files
directories = os.listdir(path_to_all_images_folder)
directories = [os.path.join(path_to_all_images_folder, folder) for folder in directories]
for directory in directories:
if os.path.isdir(directory):
keep_n_dir(directory, n)
ВНИМАНИЕ! Этот код удаляет из каталога другие файлы. Держит только n.