deltree function

gangli at msn.com gangli at msn.com
Fri Sep 8 16:27:20 EDT 2000


In article <39b7ed8b.36840425 at news.bright.net>,
  jonadab at bright.net (Jonadab the Unsightly One) wrote:
> "Warren Postma" <embed at NOSPAM.geocities.com> wrote:
>
> > On unix I'd just shell out and execute "rm -rf".  On windows, the
same might
> > work, since you could always go get the rm.exe program from
Microsoft's NT
> > Resource Toolkit.
>
> Or, rather than downloading something, you could just shell out
> to deltree.  You can get around the "Are you sure?" prompt by
> redirecting or piping its input.
>
> - jonadab
>

why not use a python function that works everywhere
see following one( though, it is a littl slower than NT rmdir/s
because isdir takes half time):

from sys import stderr
from os import listdir, remove, rmdir
from os.path import isdir, islink

DIR_EXCLUDES = ('.', '..')

def delete_dir_tree(topdir, verbose=0):
    """
    force to detele whole directory tree.
    uses with caution
    """
    if verbose:
        print "deleting directory:", topdir
    try:
        dirs = listdir(topdir)
    except OSError, why:
        stderr.write('%s, When delete directory: %s\n'%(why, topdir))
        return
    for dir in dirs:
        if dir in DIR_EXCLUDES:
            continue
        fpath = topdir+'/'+dir
        if islink(fpath) or not isdir(fpath):
            try:
                if verbose > 1:
                    print "deleting file:", fpath
                remove(fpath)
            except OSError, why:
                stderr.write('%s, When delete file: %s\n'%(why, fpath))
        else:
            delete_dir_tree(fpath, verbose)
    try:
        rmdir(topdir)
    except OSError, why:
        stderr.write('%s, When delete directory: %s\n'%(why, topdir))


Sent via Deja.com http://www.deja.com/
Before you buy.



More information about the Python-list mailing list