Я пытаюсь скопировать дерево каталогов, используя shutil
в Python.
Я делаю это так:
shutil.copytree(source,target,False,lambda x,y:[r for r in y if os.path.isfile(r)]);
где source
- это путь к исходному каталогу, а target
- это имя несуществующего каталога, внутри которого будет находиться копия source
.
Третий аргумент указывает на обращение с символическими ссылками.
Последним аргументом, насколько я понял в документации, должна быть функция, которая вводит два параметра и возвращает список имен файлов, которые будут исключены из копии. Первый вход - это имя текущего каталога, поскольку shutil
рекурсивно перемещается по дереву, а второй - список его содержимого.
Вот почему я ввожу лямбду, пытаясь вернуть те элементы в списке, которые являются файлами.
Но это не работает. Он копирует все.
Где я запуталась?
Я пытаюсь сделать, если у меня
source\
subdir1\
file11.txt
file12.txt
subdir2\
file21.txt
Я хочу получить
target\
subdir1\
subdir2\
Между прочим, я думаю, что смог бы написать копию сам, используя walk
или glob
, но я думал, что shutil
будет просто использовать.
ignore =
не изменило его. Он по-прежнему копировал подкаталоги и файлы. 31.01.2016is_dir
наos.path.isdir
работает. 31.01.2016