You should be using shutil.rmtree to recursively delete directory:
import shutil
shutil.rmtree('/path/to/your/dir/')
Answer to your question:
Is os.removedirs
and os.rmdir
only used to delete empty directories?
Yes, they can only be used to delete empty directories.
Below is the description from official Python document which clearly stats that.
os.rmdir(path, *, dir_fd=None)
Remove (delete) the directory path. Only works when the directory is empty, otherwise, OSError is raised. In order to remove whole directory trees, shutil.rmtree() can be used.
os.removedirs(name)
Remove directories recursively. Works like rmdir()
except that, if the leaf directory is successfully removed, removedirs() tries to successively remove every parent directory mentioned in path until an error is raised (which is ignored, because it generally means that a parent directory is not empty). For example, os.removedirs('foo/bar/baz') will first remove the directory 'foo/bar/baz', and then remove 'foo/bar' and 'foo' if they are empty. Raises OSError if the leaf directory could not be successfully removed.