Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.buildout
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
isaak yansane-sisk
slapos.buildout
Commits
515c32b5
Commit
515c32b5
authored
Feb 22, 2008
by
Andreas Jung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updated
parent
fbeee1e3
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
72 additions
and
0 deletions
+72
-0
src/zc/buildout/rmtree.py
src/zc/buildout/rmtree.py
+72
-0
No files found.
src/zc/buildout/rmtree.py
0 → 100644
View file @
515c32b5
##############################################################################
#
# Copyright (c) 2006 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
import
shutil
import
os
import
doctest
def
rmtree
(
path
):
"""
A variant of shutil.rmtree which tries hard to be successful
On windows shutil.rmtree aborts when it tries to delete a
read only file.
This tries to chmod the file to writeable and retries before giving up.
>>> import shutil
>>> from tempfile import mkdtemp
Let's make a directory ...
>>> d = mkdtemp()
and make sure it is actually there
>>> os.path.isdir (d)
1
Now create a file ...
>>> foo = os.path.join (d, 'foo')
>>> open (foo, 'w').write ('huhu')
and make it unwriteable
>>> os.chmod (foo, 0400)
now let's see how shutil.rmtree behaves
>>> shutil.rmtree (d) # doctest: +ELLIPSIS
Traceback (most recent call last):
...
OSError: [Errno 13] Permission denied: '...foo'
the directory is still there!
>>> os.path.isdir (d)
1
the new function should be able to solve this for us
>>> rmtree (d)
and now the directory is gone
>>> os.path.isdir (d)
0
"""
def
retry_writeable
(
func
,
path
,
exc
):
os
.
chmod
(
path
,
0600
)
func
(
path
)
shutil
.
rmtree
(
path
,
onerror
=
retry_writeable
)
def
test_suite
():
return
doctest
.
DocTestSuite
()
if
"__main__"
==
__name__
:
doctest
.
testmod
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment