Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
А это подборки моих материалов на канале
Алгоритм копирования дерева каталогов на Python
Мы рассматривали библиотеку shutil и функцию copytree(). Пришло время написать собственную функцию. Разумеется она будет рекурсивной.
Но в начале напишем простую функцию копирования одиночного файла.
Если забыли, как работать с файлами, посмотрите мою подборку
Работу с двоичными файлами.
А вот и функция копирования
Функция очень простая. Параметр frm содержит путь к исходному файлу, to путь, куда следует копировать. При этом to это именно имя файла.
Имеются две возможности для вас усовершенствовать её.
- Обработка возможных ошибок.
- Копирование метаданных файла (временные атрибуты, биты доступа и т.д.).
Следующая программа использует функцию cp(), см. выше.
Функция copytr() копирует дерево каталога. В качестве параметров указывается путь к копируемому каталогу и путь к каталогу, куда будет произведено копирование.
Например
/home/vladislav/Загрузки
./dn
Функция copytr() очень проста. И опять у вас большое поле деятельности. Как можно её усовершенствовать.
- Перенос метаданных создаваемых каталогов.
- Накопительная обработка ошибок. Т.е. получения списка ошибок копирования и их причин (хорошая работа).
- Добавить возможность копирования файлов, на которые указывает символьная ссылка.
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.