import shutil shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)
src
- str
, исходное место/путь копируемого файла ,dst
- str
, место/путь назначения нового файла,follow_symlinks=True
- как обрабатывать символические ссылки (пройти по ссылке и скопировать данные или создать новую ссылку).ignore=None
- функция пропуска файлов,copy_function=copy2
- функция копирования файлов,ignore_dangling_symlinks=False
- отключает исключение при копировании битых символических ссылок,dirs_exist_ok=False
- вызывает исключение если dst
существует.str
каталог назначения dst
.shutil.copytree()
:Функция copytree()
модуля shutil
рекурсивно копирует все дерево каталогов с корнем в src
в каталог с именем dst
и возвращает каталог назначения dst
.
Аргумент dirs_exist_ok
позволяет НЕ ВЫЗЫВАТЬ исключение, если dst
или какой-либо родительский каталог уже существует.
Права и время доступа/изменения каталогов копируются с помощью функции shutil.copystat()
, отдельные файлы копируются с помощью функции shutil.copy2()
.
Если аргумент follow_symlinks
имеет значение True
, то метаданные исходных ссылок будут скопированы, насколько позволяет платформа. Если False
или None
, то будет создана новая символическая ссылка.
Когда аргумент symlinks
имеет значение False
и если файл, на который указывает символическая ссылка не существует, то будет добавлено исключение в список ошибок Error
, возникших в конце процесса копирования. Можно установить необязательный флаг ignore_dangling_symlinks
в значение True
, если хотите отключить это исключение. Обратите внимание, что этот параметр не влияет на платформы, которые не поддерживают функцию os.symlink()
.
Если задано ignore
, это должен быть вызываемая функция, которая будет получать в качестве аргументов каталог dst
и список его содержимого, возвращаемый os.listdir()
. Поскольку shutil.copytree()
вызывается рекурсивно, то игнорирование будет вызываться один раз для каждого вложенного копируемого каталога.
Вызываемый объект должен возвращать последовательность имен каталогов и файлов относительно текущего каталога, то есть подмножества элементов во втором аргументе. Эти имена будут игнорироваться в процессе копирования. Функция shutil.ignore_patterns()
может использоваться для создания такого вызываемого объекта, который игнорирует имена на основе шаблонов в стиле glob.glob()
.
Если возникает исключение(я), то возникает ошибка с перечнем причин.
Если задана функция copy_function
, это должен быть вызываемый объект, который будет использоваться для копирования каждого файла. Он будет вызываться с исходным путем scr
и путем назначения dst
в качестве аргументов. По умолчанию используется функция shutil.copy2()
, но можно использовать любую функцию, поддерживающую такую же сигнатуру, например shutil.copy()
.
Вызывает событие аудита shutil.copytree
с аргументами src
, dst
.
Пример, который использует помощник shutil.ignore_patterns()
. Копируется все, кроме файлов .pyc
и файлов или каталогов, чье имя начинается с tmp
.
from shutil import copytree, ignore_patterns copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
Другой пример, который использует аргумент ignore
для добавления вызова логирования:
from shutil import copytree import logging def _logpath(path, names): logging.info('Working in %s', path) return [] # nothing will be ignored copytree(source, destination, ignore=_logpath)