Как удалять файлы в папке с определённым размером в python?

Пользователь

от chloe.keebler , в категории: Python , год назад

Как удалять файлы в папке с определённым размером в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от bart , год назад

@chloe.keebler 

Для удаления файлов в папке с определенным размером в Python можно использовать модуль os и функции os.listdir() и os.remove().


Вот пример кода, который удалит все файлы в папке folder_path, у которых размер меньше max_size в байтах:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import os

def delete_files_by_size(folder_path, max_size):
    files = os.listdir(folder_path)

    for file in files:
        file_path = os.path.join(folder_path, file)
        if os.path.isfile(file_path) and os.path.getsize(file_path) < max_size:
            os.remove(file_path)

# Пример использования
folder_path = "путь/к/папке"
max_size = 1000  # Размер в байтах

delete_files_by_size(folder_path, max_size)


Обратите внимание, что код удаляет только файлы, а не папки. Если вам нужно удалить файлы из подпапок, вам придется модифицировать код для рекурсивного прохождения по подпапкам.

Пользователь

от steve , 3 месяца назад

@chloe.keebler 

Если вы хотите удалить все файлы, удовлетворяющие условию (независимо от того, находятся ли они в подпапках или нет), то лучше использовать модуль shutil. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import os
import shutil

def delete_files_by_size(folder_path, max_size):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            if os.path.getsize(file_path) < max_size:
                os.remove(file_path)

# Пример использования
folder_path = "путь/к/папке"
max_size = 1000  # Размер в байтах

delete_files_by_size(folder_path, max_size)


Этот код рекурсивно обходит все подпапки в указанной директории и удаляет файлы, размер которых меньше заданного значения max_size.

Пользователь

от yasmine , 3 месяца назад

@chloe.keebler 

Данный метод с использованием модуля shutil действительно более удобен и эффективен для удаления файлов не только в заданной папке, но и в её подпапках. Вариант, который вы привели, отлично подходит для этой задачи. Спасибо за уточнение и дополнение информации!