python: delete non-empty dir

Question:

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

The directory may have nested subdirectories many levels deep.

Asked By: flybywire

||

Answers:

Use shutil.rmtree:

import shutil

shutil.rmtree(path)

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

Answered By: RichieHindle

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.

Answered By: Andrew Dalke

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

Answered By: dgh
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.