6

I've recently have this trouble: I needed a function that removes an entirely folder in windows so I searched and this is what I get:

How do I remove/delete a folder that is not empty with Python? empty-with-python

The answers, that looks ok, seems a bit confusing and large for me... there should be a better way to solve the oneerror while accesing files in windows with shutil.rmtree (raise an error trying to acces read only files)...

Community
  • 1
  • 1
Netwave
  • 40,134
  • 6
  • 50
  • 93

1 Answers1

12

I want to share an easy way that works for me.

I just made a function that changes the write permission mode of the file, and then deletes it with os.remove:

import stat # needed for file stat

# arguments: the function that failed, the path 
# it failed on, and the error that occurred.
def redo_with_write(redo_func, path, err):
    os.chmod(path, stat.S_IWRITE)
    redo_func(path)

then when using rmtree, add it to the onerror parameter:

import shutil
shutil.rmtree(desiredpath, onerror = redo_with_write)

Hope it helps to someone with the same trouble I get.

idbrii
  • 10,975
  • 5
  • 66
  • 107
Netwave
  • 40,134
  • 6
  • 50
  • 93
  • How this method could handle if the directory is not exist, i.e. containing the ```ignore_errors=True``` in itself. – Ali_Sh Nov 10 '21 at 22:42