Search code examples
pythonwindowsfileonerror

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


Solution

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