Python: problem with tiny script to delete files

Posted by Rosarch on Stack Overflow See other posts from Stack Overflow or by Rosarch
Published on 2010-06-11T02:39:25Z Indexed on 2010/06/11 2:42 UTC
Read the original article Hit count: 214

Filed under:
|

I have a project that used to be under SVN, but now I'm moving it to Mercurial, so I want to clear out all the .svn files.

It's a little too big to do it by hand, so I decided to write a python script to do it. But it isn't working.

def cleandir(dir_path):
    print "Cleaning %s\n" % dir_path
    toDelete = []
    files = os.listdir(dir_path)
    for filedir in files:
        print "considering %s" % filedir
        # continue
        if filedir == '.' or filedir == '..':
            print "skipping %s" % filedir
            continue
        path = dir_path + os.sep + filedir
        if os.path.isdir(path):
            cleandir(path)
        else:
            print "not dir: %s" % path

        if 'svn' in filedir:
            toDelete.append(path)

    print "Files to be deleted:"
    for candidate in toDelete:
        print candidate
    print "Delete all? [y|n]"

    choice = raw_input()

    if choice == 'y':
        for filedir in toDelete:
            if os.path.isdir(filedir):
                os.rmdir(filedir)
            else:
                os.unlink(filedir)

    exit()

if __name__ == "__main__":
    cleandir(dir)

The print statements show that it's only "considering" the filedirs whose names start with ".". However, if I uncomment the continue statement, all the filedirs are "considered". Why is this?

Or is there some other utility that already exists to recursively de-SVN-ify a directory tree?

© Stack Overflow or respective owner

Related posts about python

Related posts about filesystem