##
6.23.1 Example

This example is the implementation of the `copytree()` function, described above, with the docstring omitted. It demonstrates many of the other functions provided by this module.

      def copytree(src, dst, symlinks=0):
          names = os.listdir(src)
          os.mkdir(dst)
          for name in names:
              srcname = os.path.join(src, name)
              dstname = os.path.join(dst, name)
              try:
                  if symlinks and os.path.islink(srcname):
                      linkto = os.readlink(srcname)
                      os.symlink(linkto, dstname)
                  elif os.path.isdir(srcname):
                      copytree(srcname, dstname)
                  else:
                      copy2(srcname, dstname)
                  # XXX What about devices, sockets etc.?
              except (IOError, os.error), why:
                  print "Can't copy %s to %s: %s" % (`srcname`, `dstname`, str(why))