Gigs_ kirjoitti: > hi people > > I have problem with this example, not actually the problem, but > [code] > class FileVisitor(object): > def __init__(self, data=None): > self.context = data > def run(self, startdir=os.curdir): > os.path.walk(startdir, self.visitor, None) > def visitor(self, data, dirname, filesindir): > self.visitdir(dirname) > for fname in filesindir: > fpath = os.path.join(dirname, fname) > if not os.path.isdir(fpath): > self.visitfile(fpath) > def visitdir(self, dirpath): # override or extend this > method > print dirpath, '...' > def visitfile(self, filepath): # override or extend this > method > print self.fcount, '=>', filepath > # > class CVisitor(FileVisitor): > def __init__(self, fromdir, todir): > self.fromdirLen = len(fromdir) + 1 # here is my problem > self.todir = todir > FileVisitor.__init__(self, fromdir) > def visitdir(self, dirpath): > topath = os.path.join(self.todir, dirpath[self.fromdirLen:]) > os.mkdir(topath) > def visitfile(self, filepath): > topath = os.path.join(self.todir, filepath[self.fromdirLen:]) > cpfile(filepath, topath) #copy contents from filepath to > topath[/code] > > > When I copy contents from C:\IronPython to C:\temp > its all goes fine when self.fromdirLen = len(fromdir) + 1 is like this > self.fromdirLen = len(fromdir) + 1 > but when I change self.fromdirLen = len(fromdir) + 1 to self.fromdirLen > = len(fromdir) i get contents copied to C:\ (actually to parent dir) > > Can anyone explain me that? > > Thanks!!! > :o
Why do you want to change a working program anyway? :) The result of your change is that os.path.join does the join differently. Before the change the join is, for example: os.path.join(r'c:\temp', r'AUTOEXEC.BAT') with a result: c:\temp\AUTOEXEC.BAT After your change the join is: os.path.join(r'c:\temp', r'\AUTOEXEC.BAT') with a result: \AUTOEXEC.BAT This is described in the doc: join( path1[, path2[, ...]]) Join one or more path components intelligently. If any component is an absolute path, all previous components (on Windows, including the previous drive letter, if there was one) are thrown away, and joining continues. HTH, Jussi -- http://mail.python.org/mailman/listinfo/python-list