From: Tim Golden Date: Wed, 7 May 2014 17:05:45 +0000 (+0100) Subject: Issue19643 Add an example of shutil.rmtree which shows how to cope with readonly... X-Git-Tag: v3.5.0a1~1722 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=783377998a5139544f5c429ce621c38ceb674adf;p=thirdparty%2FPython%2Fcpython.git Issue19643 Add an example of shutil.rmtree which shows how to cope with readonly files on Windows --- diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index e4f348cd82ce..eb81c7d48c32 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -421,6 +421,26 @@ Another example that uses the *ignore* argument to add a logging call:: copytree(source, destination, ignore=_logpath) +.. _shutil-rmtree-example: + +rmtree example +~~~~~~~~~~~~~~ + +This example shows how to remove a directory tree on Windows where some +of the files have their read-only bit set. It uses the onerror callback +to clear the readonly bit and reattempt the remove. Any subsequent failure +will propagate. :: + + import os, stat + import shutil + + def remove_readonly(func, path, _): + "Clear the readonly bit and reattempt the removal" + os.chmod(path, stat.S_IWRITE) + func(path) + + shutil.rmtree(directory, onerror=remove_readonly) + .. _archiving-operations: Archiving operations