This is an iterative method, although much slower than shutil.rmtree(), which can be useful sometimes, while some stdout/in is added:

#!/usr/bin/python
#Filename: myrmtree.py

import os,sys,shutil

def rmtree(top):
   uncleandir=[]
   for (root,dirs,files) in os.walk(top,topdown=False):
       for name in dirs+files:
           item=os.path.join(root,name)
           if item in uncleandir:
               uncleandir.append(root)
               continue
           print 'Delete %s : (Yes or No or All or Cancel)' %(item,),
           v=raw_input()
           if v=='Y' or v=='y':
               (os.path.isfile(item) and os.remove or os.rmdir)(item)
           elif v=='N' or v=='n':
               uncleandir.append(root)
               continue
           elif v=='A' or v=='a':
               shutil.rmtree(top)
               return 1
           elif v=='C' or v=='c':
               return 2
           else:
               print 'Take your input as No.'
               continue
   return 0

>>>from myrmtree import tree
>>>top='/home/juan/test' #Your dir need to be removed here
>>>rmtree(top)

Just try it and give suggestions and comments please, Hehe
   Juan Shen

Jason Child wrote:

is this what you want to do?

import os
from os.path import join
# Delete everything reachable from the directory named in 'top'.
# CAUTION: This is dangerous! For example, if top == '/', it
# could delete all your disk files.

for root, dirs, files in os.walk(top, topdown=False):
   for name in files:
       os.remove(join(root, name))
   for name in dirs:
        os.rmdir(join(root, name))

I cant take credit for the code, as I found it when I was trying to hack together a recirsive file remover script. It was in the help files for the os module, under walk(). Go figure; when you try to do things the "hard way" python keeps it simple!

Peace

Jason

Ertl, John wrote:

Jason,

I could...That is the exact feature I am trying to replicate, but I would
just like to do it in Python if I can (in a simple way). I am writing this
code in Python to avoid some funny scripting that I would need to do. To go
back to combing shell and Python again would be a bit deflating...but the
straight forward path might be the best.


Thanks,

John Ertl

-----Original Message-----
From: Jason Child [mailto:[EMAIL PROTECTED]
Sent: Thursday, December 16, 2004 12:36
Cc: [EMAIL PROTECTED]
Subject: Re: [Tutor] removedirs ?

Ertl, John wrote:



I am trying to remove a directory that has other directories and files in
it. I thought removedirs was supposed to do a recursive remove of files

and


directories.

When I try it I get





os.removedirs("DAF")

Traceback (most recent call last):
File "<pyshell#11>", line 1, in -toplevel-
  os.removedirs("DAF")
File "/home/ertlj/ertljVersion/lib/python2.3/os.py", line 167, in
removedirs
  rmdir(name)
OSError: [Errno 17] File exists: 'DAF'

Thanks,

John Ertl


_______________________________________________ Tutor maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/tutor




it seems to me that if its on a *nix box you could use the shell command rm -rf <target> _______________________________________________ Tutor maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/tutor




_______________________________________________ Tutor maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/tutor




_______________________________________________
Tutor maillist  -  [EMAIL PROTECTED]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to