home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 April / com_0405_1.iso / opensource / BTpp-0.5.4-bin.exe / $INSTDIR / BT++.exe / shutil.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2003-04-19  |  4.1 KB  |  130 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.2)
  3.  
  4. import os
  5. import sys
  6. import stat
  7. __all__ = [
  8.     'copyfileobj',
  9.     'copyfile',
  10.     'copymode',
  11.     'copystat',
  12.     'copy',
  13.     'copy2',
  14.     'copytree',
  15.     'rmtree']
  16.  
  17. def copyfileobj(fsrc, fdst, length = 16 * 1024):
  18.     while 1:
  19.         buf = fsrc.read(length)
  20.         if not buf:
  21.             break
  22.         
  23.         fdst.write(buf)
  24.  
  25.  
  26. def copyfile(src, dst):
  27.     fsrc = None
  28.     fdst = None
  29.     
  30.     try:
  31.         fsrc = open(src, 'rb')
  32.         fdst = open(dst, 'wb')
  33.         copyfileobj(fsrc, fdst)
  34.     finally:
  35.         if fdst:
  36.             fdst.close()
  37.         
  38.         if fsrc:
  39.             fsrc.close()
  40.         
  41.  
  42.  
  43.  
  44. def copymode(src, dst):
  45.     if hasattr(os, 'chmod'):
  46.         st = os.stat(src)
  47.         mode = stat.S_IMODE(st[stat.ST_MODE])
  48.         os.chmod(dst, mode)
  49.     
  50.  
  51.  
  52. def copystat(src, dst):
  53.     st = os.stat(src)
  54.     mode = stat.S_IMODE(st[stat.ST_MODE])
  55.     if hasattr(os, 'utime'):
  56.         os.utime(dst, (st[stat.ST_ATIME], st[stat.ST_MTIME]))
  57.     
  58.     if hasattr(os, 'chmod'):
  59.         os.chmod(dst, mode)
  60.     
  61.  
  62.  
  63. def copy(src, dst):
  64.     if os.path.isdir(dst):
  65.         dst = os.path.join(dst, os.path.basename(src))
  66.     
  67.     copyfile(src, dst)
  68.     copymode(src, dst)
  69.  
  70.  
  71. def copy2(src, dst):
  72.     if os.path.isdir(dst):
  73.         dst = os.path.join(dst, os.path.basename(src))
  74.     
  75.     copyfile(src, dst)
  76.     copystat(src, dst)
  77.  
  78.  
  79. def copytree(src, dst, symlinks = 0):
  80.     names = os.listdir(src)
  81.     os.mkdir(dst)
  82.     for name in names:
  83.         srcname = os.path.join(src, name)
  84.         dstname = os.path.join(dst, name)
  85.         
  86.         try:
  87.             if symlinks and os.path.islink(srcname):
  88.                 linkto = os.readlink(srcname)
  89.                 os.symlink(linkto, dstname)
  90.             elif os.path.isdir(srcname):
  91.                 copytree(srcname, dstname, symlinks)
  92.             else:
  93.                 copy2(srcname, dstname)
  94.         except (IOError, os.error):
  95.             why = None
  96.             print "Can't copy %s to %s: %s" % (`srcname`, `dstname`, str(why))
  97.  
  98.     
  99.  
  100.  
  101. def rmtree(path, ignore_errors = 0, onerror = None):
  102.     cmdtuples = []
  103.     _build_cmdtuple(path, cmdtuples)
  104.     for cmd in cmdtuples:
  105.         
  106.         try:
  107.             apply(cmd[0], (cmd[1],))
  108.         except:
  109.             exc = sys.exc_info()
  110.             if ignore_errors:
  111.                 pass
  112.             elif onerror:
  113.                 onerror(cmd[0], cmd[1], exc)
  114.             else:
  115.                 raise exc[0], (exc[1][0], exc[1][1] + ' removing ' + cmd[1])
  116.  
  117.     
  118.  
  119.  
  120. def _build_cmdtuple(path, cmdtuples):
  121.     for f in os.listdir(path):
  122.         real_f = os.path.join(path, f)
  123.         if os.path.isdir(real_f) and not os.path.islink(real_f):
  124.             _build_cmdtuple(real_f, cmdtuples)
  125.         else:
  126.             cmdtuples.append((os.remove, real_f))
  127.     
  128.     cmdtuples.append((os.rmdir, path))
  129.  
  130.