Steven you are right, isDirEmpty() isn't even used. That's what happens when you try to get a last minute thread going 5 minutes before home time! ;-)
Thanx for the responses guys! It's been very useful :) On 30 Mar, 16:38, Steven D'Aprano <st...@remove-this- cybersource.com.au> wrote: > On Mon, 30 Mar 2009 08:14:55 -0700, CinnamonDonkey wrote: > > My understanding was that rmtree removes a whole tree not just the empty > > directories? > > So it seems: > > >>> os.mkdir('die-die-die') > >>> os.mkdir('die-die-die/stuff') > >>> shutil.rmtree('die-die-die') > > I think what you want is os.removedirs(). > > >>> os.makedirs('root/die-die-die/empty/empty/empty') > >>> os.listdir('root') > > ['keep', 'die-die-die']>>> os.removedirs('root/die-die-die/empty/empty/empty') > >>> os.listdir('root') > > ['keep'] > > > def isDirEmpty( path ): > > if not os.path.isdir( path ): > > return False > > > contents = os.listdir( path ) > > > if len(contents) == 0: > > return True > > > return False > > That can be simplified to: > > # untested > def isDirEmpty(path): > return os.path.isdir(path) and not len(os.listdir(path)) > > > def RecurseTree( path ): > > if not os.path.isdir( path ): > > return False > > What if it is a symbolic link to a directory? > > > contents = os.listdir( path ) > > > if len(contents) == 0: > > print "Deleting Empty Dir '%s'" % (path,) #shutil.rmtree(path) > > Why do you go to the trouble of defining isDirEmpty() and then not use it? > > > else: > > for item in contents: > > investigate = "%s\\%s" % (path, item) if > > os.path.isdir(investigate): > > RecurseTree( investigate ) > > As soon as you start recursively walking over directories, you should use > os.walk. It will almost certainly do what you want. > > > if __name__ == '__main__': > > RecurseTree( r"c:\temp" ) > > > But I'm not sure what the max recursion depth is in python? > > By default in my version: > > >>> sys.getrecursionlimit() > > 1000 > > but it can be changed. > > > Plus I think this could be more efficient. > > Probably, but why do you care? The file I/O probably will take 99% of the > time, and I doubt you can improve that. > > Of course I could be wrong, so profile, profile, profile, and find out > where the time really is being spent. > > -- > Steven -- http://mail.python.org/mailman/listinfo/python-list