Проверьте этот вопрос:
Какой пользователь запускает скрипты Python как в Windows?
Очевидно, ответ - изменить файл / папку на не быть доступным только для чтения, а затем удалите его.
Вот обработчик onerror ()
из pathutils.py
, упомянутый @Sridhar Ratnakumar в комментариях:
def onerror(func, path, exc_info):
"""
Error handler for ``shutil.rmtree``.
If the error is due to an access error (read only file)
it attempts to add write permission and then retries.
If the error is for another reason it re-raises the error.
Usage : ``shutil.rmtree(path, onerror=onerror)``
"""
import stat
if not os.access(path, os.W_OK):
# Is the error an access error ?
os.chmod(path, stat.S_IWUSR)
func(path)
else:
raise
Я бы сказал, реализовать ваше собственное rmtree с os.walk , которое обеспечивает доступ с помощью os.chmod к каждому файлу перед попыткой его удаления.
Примерно так (не проверено):
import os
import stat
def rmtree(top):
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
filename = os.path.join(root, name)
os.chmod(filename, stat.S_IWUSR)
os.remove(filename)
for name in dirs:
os.rmdir(os.path.join(root, name))
os.rmdir(top)