Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove folder in python? rmtree onerror

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)...

like image 450
Netwave Avatar asked Feb 19 '23 18:02

Netwave


1 Answers

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.

like image 164
Netwave Avatar answered Feb 21 '23 09:02

Netwave