Копирование каталога, включая себя - PullRequest
0 голосов
/ 21 апреля 2019

Шалом,

Мой сценарий делает вид, что выполняет следующие действия:

  1. получает исходные (= src) и целевые (= dst) папки в качестве входных данных.
  2. скопируйте весь каталог и подкаталоги src в dst.

Я уже решил проблему с перезаписью, то есть файл / каталог, который существует как в src, так и в dst.

Теперь мойЕдинственная проблема заключается в том, что папка src копируется без самой себя.

, например:

src = "D: / Apple / 21042019 /..."

dst = "C: / Apple /

Когда я выполняю свой сценарий, я получаю в месте назначения следующее:

" C: / Apple / ... "

Хотя мое желаемое состояние должно иметь:

"C: / Apple / 21042019 /..."

см. Прилагаемый кодниже

Есть предложения?

def copytree(self, src, dst, symlinks=False, ignore=None):
        root_src_dir = src
        root_dst_dir = dst

        for src_dir, dirs, files in os.walk(root_src_dir):
            dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1)
            if not os.path.exists(dst_dir):
                os.makedirs(dst_dir)
            for file_ in files:
                src_file = os.path.join(src_dir, file_)
                dst_file = os.path.join(dst_dir, file_)
                if os.path.exists(dst_file):
                    # in case of the src and dst are the same file
                    if os.path.samefile(src_file, dst_file):
                        continue
                    os.remove(dst_file)
                shutil.move(src_file, dst_dir)
...