Sounds like a neat little feature. Looking forward to it. Maybe the most useful use case would be to provide glob-style patterns for skipping files or directories (and their contents).
--Guido On Thu, Apr 17, 2008 at 9:52 AM, Tarek Ziadé <[EMAIL PROTECTED]> wrote: > Hi, > > shutil.copytree is very convenient to make recursive copies, but > os.walk has to be used everytime some filtering > has to be done on the files copied., if you want to avoid copying some files. > > The code pattern with os.walk is pretty talkative : > > --------------------- copying a source folder to a target folder, but > the pyc/pyo files > os.mkdir(target) > for root, dirs, filenames in os.walk(source): > root_target = root.replace(source, target) > for dir_ in dirs: > target_dir = join(root_target, dir_) > if os.path.exists(target_dir): > continue > os.mkdir(target_dir) > for filename in filenames: > filename_source = join(root, filename) > filename_target = join(root_target, filename) > if (os.path.exists(filename_target) or > os.path.splitext(filename) in ('.pyc', '.pyo')): > continue > shutil.copyfile(filename_source, filename_target) > -------------------- > > If we could provide a callable argument to shutil.copytree, this would > allow simplifying a lot the code: > > --------------------- copying a source to a target, but the pyc/pyo file > def filtering(source, target): > return os.path.splitext(filename) not in ('.pyc', '.pyo') > > shutil.copytree(source, target, filter_=filtering) > --------------------- > > This is a very current pattern in my code, and I think this could be > an interesting enhancement to > shutil. So if people think it is a good idea, I can work on a patch > and submit it to the tracker. > > Regards > > Tarek > > -- > Tarek Ziadé | Association AfPy | www.afpy.org > Blog FR | http://programmation-python.org > Blog EN | http://tarekziade.wordpress.com/ > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/guido%40python.org > -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com