Невозможно удалить папку с атрибутом "Для чтения" 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 шт):
Попробуйте так:
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, которая уже в ручном режиме поставит атрибут разрешающий запись и удалит этот объект.