123

How do I delete a possibly non-empty dir in Python.

The directory may have nested subdirectories many levels deep.

0

3 Answers 3

194

Use shutil.rmtree:

import shutil

shutil.rmtree(path)

See the documentation for details of how to handle and/or ignore errors.

Sign up to request clarification or add additional context in comments.

Comments

93

The standard library includes shutil.rmtree for this. By default,

shutil.rmtree(path)  # errors if dir not empty

will give OSError: [Errno 66] Directory not empty: <your/path>.

You can delete the directory and its contents anyway by ignoring the error:

shutil.rmtree(role_fs_path, ignore_errors=True)

You can perform more sophisticated error handling by also passing onerrror=<some function(function, path, excinfo)>.

5 Comments

ignore_errors=True means it does not remove the directory.
ignore_errors=True was the tickket
oh no, what a terrible name for parameter :(
shutil.rmtree(path) will not give errors if the directory is empty in python 3.8, so this probably changed since you posted 6 years ago. Just wanted to update for other people viewing this now.
shutil.rmtree(path) doesn't throw error if the directory not empty (python 3.7.9)
12

You want shutil.rmtree

shutil.rmtree(path[, ignore_errors[, onerror]])

Delete an entire directory tree; path must point to a directory (but not a symbolic link to a directory). If ignore_errors is true, errors resulting from failed removals will be ignored; if false or omitted, such errors are handled by calling a handler specified by onerror or, if that is omitted, they raise an exception.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.