[issue8523] shutil.rmtree and os.listdir cannot recover on error conditions

R. David Murray report at bugs.python.org
Mon Apr 26 03:30:26 CEST 2010

R. David Murray <rdmurray at bitdance.com> added the comment:

If solution 1 is acceptable in the general case, then I think a better fix  would look like this:

    names = os.listdir(path)
except os.error, err:
    onerror(os.listdir, path, sys.exc_info())

That is, this is another case in which we can't continue even if onerror returns.  However, onerror is free to correct the problem and then call rmtree.  (The danger, of course, is infinite recursion, but I don't think it is our responsibility to protect the author of an onerror handler from that potential mistake.)

By analogy to the other place rmtree returns after an onerror call, the above fix does fix a real bug, regardless of the disposition of the feature request, since currently if onerror returns we get a name error.

components: +Library (Lib) -Extension Modules
keywords: +easy
nosy: +r.david.murray
priority:  -> low
stage:  -> unit test needed
type:  -> behavior
versions: +Python 2.6, Python 2.7, Python 3.1, Python 3.2 -Python 2.5

Python tracker <report at bugs.python.org>

More information about the Python-bugs-list mailing list