Advertisement
DeaD_EyE

sycp

Oct 4th, 2016
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. #!/usr/bin/env python2
  2. '''
  3. Das Programm kopiert Dateien von src nach dst. Verzeichnisse werden erstellt, wenn sie nicht existieren.
  4. Dateien werden als Symlinks angelegt. Optional koennen auch relative Symlinks angelegt werden.
  5. '''
  6.  
  7. from __future__ import print_function
  8. import os
  9. import sys
  10. import argparse
  11.  
  12. def copy(src, dst, relative=False):
  13.     src = os.path.abspath(src)
  14.     dst = os.path.abspath(dst)
  15.     try:
  16.         os.mkdir(dst)
  17.     except OSError:
  18.         pass
  19.     for root, dirs, files in os.walk(src):
  20.         dstroot = os.path.join(dst, root[len(src):])
  21.         for dir in dirs:
  22.             dstpath = os.path.join(dstroot, dir)
  23.             try:
  24.                 os.mkdir(dstpath)
  25.             except OSError:
  26.                 pass
  27.         for file in files:
  28.             dstfile = os.path.join(dstroot, file)
  29.             srcfile = os.path.join(root, file)
  30.             if relative:
  31.                 srcfile = os.path.relpath(path=srcfile, start=dstroot)
  32.             try:
  33.                 os.symlink(srcfile, dstfile)
  34.             except OSError:
  35.                 pass
  36.  
  37. def args():
  38.     parser = argparse.ArgumentParser(prog='sycp', description=__doc__)
  39.     parser.add_argument('src', help='Quellverzeichnis', action='store')
  40.     parser.add_argument('dst', help='Zielverzeichnis', action='store')
  41.     parser.add_argument('-r', '--relative', help='Relative Symlinks', action='store_true', default=False)
  42.     return parser
  43.  
  44. if __name__ == '__main__':
  45.     parser = args()
  46.     arguments = parser.parse_args()
  47.     copy(arguments.src, arguments.dst, arguments.relative)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement