From 783377998a5139544f5c429ce621c38ceb674adf Mon Sep 17 00:00:00 2001 From: Tim Golden Date: Wed, 7 May 2014 18:05:45 +0100 Subject: Issue19643 Add an example of shutil.rmtree which shows how to cope with readonly files on Windows --- Doc/library/shutil.rst | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index e4f348c..eb81c7d 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 -- cgit v0.12