Ben Sizer <[EMAIL PROTECTED]> writes: > On 20 Jun, 11:40, Justin Ezequiel <[EMAIL PROTECTED]> > wrote: >> On Jun 20, 5:30 pm, Ben Sizer <[EMAIL PROTECTED]> wrote: >> >> > I need to copy directories from one place to another, but it needs to >> > overwrite individual files and directories rather than just exiting if >> > a destination file already exists. >> >> What version of Python do you have? >> Nothing in the source would make it exit if a target file exists. >> (Unless perhaps you have sym-links or the like.) > > I have 2.5, and I believe the behaviour I saw was that it exits if a > directory already exists and it skips any files that already exist. It > certainly wouldn't overwrite anything.
How about distutils.dir_util.copy_tree? It's a documented API: http://docs.python.org/dist/module-distutils.dirutil.html Here's a demo. Note the arguments to distutils.dir_util.copy_tree have a different meaning to shutil.copytree IIRC (you need to pass the parent of the directory rather than the directory itself): from distutils.dir_util import copy_tree import os def mkdir(dirname): os.mkdir(dirname) def write(filename, data): f = open(filename, "w") try: f.write(data) finally: f.close() def read(filename): f = open(filename) try: return f.read() finally: f.close() def make_tree_1(): mkdir("1") mkdir(os.path.join("1", "1")) write(os.path.join("1", "1", "a"), "abc") return "1" def make_tree_2(): mkdir("2") mkdir(os.path.join("2", "1")) write(os.path.join("2", "1", "a"), "bcd") return "2" dirname_1 = make_tree_1() dirname_2 = make_tree_2() copy_tree(dirname_1, dirname_2) result = read(os.path.join(dirname_2, "1", "a")) assert result == "abc", result John -- http://mail.python.org/mailman/listinfo/python-list