Невозможно удалить папку с атрибутом "Для чтения" Python

Хочу удалить папку, в которой есть файлы с атрибутом "Только для чтения". При этом, я пытаюсь убрать у папки этот атрибут, но не выходит. Даже при помощи итерации и поэтапным изменением типа чтения для каждого объекта папки, всё равно не выходит её удалить, выходит такая ошибка:

PermissionError: [WinError 5] Отказано в доступе: 'путь к папке/файлу папки'

Как удалить всё содержимое папки, если некоторые её объекты имеют значение "Только для чтения"?

Вот пример кода

                for obj in os.listdir('Путь к папке'):
                    os.chmod('Путь к папке' + obj, stat.S_IXUSR)
                    os.remove('Путь к папке' + obj)

или вот:

            os.chmod('Путь к папке', stat.S_IRGRP)
            shutil.rmtree('Путь к папке')

К слову, с одиночными файлами всё работает, но вот с папками вообще нет. Что делать?


Ответы (1 шт):

Автор решения: GrAnd

Попробуйте так:

def del_readonly(action, name, exc):
    os.chmod(name, stat.S_IWRITE)
    os.remove(name)

shutil.rmtree(path, onerror=del_readonly)

Если у shutil.rmtree не получится удалить что-то, то вызовется функция del_readonly, которая уже в ручном режиме поставит атрибут разрешающий запись и удалит этот объект.

→ Ссылка