ianaré wrote:
Hello all,

I trying to recursively rename folders and files, and am looking for
some ideas on the best way of doing this. The problem is that the
given list of items can be in order, and one to all items may be
renamed. Here is some preliminary code I have, but which does not work
very well.

self.toRename has the following structure :
[
[original_name, new_name, os.path.isdir]
..
]

# define these here for faster processing
def split(item):
    return os.path.split(item)
def addSep(path):
    return os.sep + path + os.sep
def recursiveFolderSort(x,y):
    return cmp(y[0], x[0])

sortedRename = sorted(self.toRename)

# make a list of all folders that will be processed
foldersToAdjust = []
for item in sortedRename:
    if item[2] is False:
     if not item[2]:
        oF = split(item[0])[1] # original folder name
        nF = split(item[1])[1] # new folder name
        if oF is not nF:
         if oF != nF:
            foldersToAdjust.append((oF, nF))

# replace all occurences of folders in path
for i in range(len(self.toRename)):
    for f in foldersToAdjust:
        oF = addSep(f[0]) # original folder name
        nF = addSep(f[1]) # new folder name
        self.toRename[i][0] = self.toRename[i][0].replace(oF,nF)
        self.toRename[i][1] = self.toRename[i][1].replace(oF,nF)

    if progressDialog.update(i) is False:
     if not progressDialog.update(i):
        error = 'cancelled'
        break

# make sure renaming will be in correct order !
self.toRename.sort(recursiveFolderSort)



First problem is adjusting the paths can take a very long time.
Second problem is sorting is not always right and files get lost !!
Any input welcome.

You should use "is" and "is not" _only_ when checking for _identity, ie are these 2 both references to the _same_ object. Most of the time that would be "x is None" or "x is not None".
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to