Python. Рекурсивное копирование папки с заменой поддиректорий

В одном из проектов использую кучу сторонних библиотек и утилит, которые при отладке приходится частенько обновлять. Раньше для этого использовался простенький .bat-файл, но структура папок несколько разрослась и пришлось искать замену. Попробовал написать еще один командный файл на замену, но затерялся где-то в синтаксисе - сейчас даже не уверен, что это вообще можно сделать.

Встретив сопротивление решил вспомнить о Python, с которым разок уже имел дело. Стал знакомится ближе и далеко не все мне понравилось (перевернутый тернарный оператор, невозможность определить только else в условной конструкции).

Но самое главное, то что функция shutil.copytree не умеет работать с ранее созданными каталогами и выдает ошибку при вызове mkdir. Пришлось ее немного модифицировать.

  1. import os, sys, shutil
  2.  
  3. def copytree(src, dst, symlinks=0):
  4. print ("copy tree " + src)
  5. names = os.listdir(src)
  6. if not os.path.exists(dst):
  7. os.mkdir(dst)
  8. for name in names:
  9. srcname = os.path.join(src, name)
  10. dstname = os.path.join(dst, name)
  11. try:
  12. if symlinks and os.path.islink(srcname):
  13. linkto = os.readlink(srcname)
  14. os.symlink(linkto, dstname)
  15. elif os.path.isdir(srcname):
  16. copytree(srcname, dstname, symlinks)
  17. else:
  18. shutil.copy2(srcname, dstname)
  19. except (IOError, os.error):
  20. print ("Can't copy %s to %s: %s", srcname, dstname, str(why))
  21.  

Читайте в блоге

Преобразование HTML-цвета в RGB
Funky Cache
Круглая кнопка на JavaScript.

Метки: python

Комментарии:

Войдите на сайт, чтобы оставить комментарий