Найти тему
programmer's notes (python and more)

Программирование на Python. Рекурсивная функция копирования дерева каталогов

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

А это подборки моих материалов на канале

Алгоритм копирования дерева каталогов на Python

Мы рассматривали библиотеку shutil и функцию copytree(). Пришло время написать собственную функцию. Разумеется она будет рекурсивной.

Но в начале напишем простую функцию копирования одиночного файла.

Если забыли, как работать с файлами, посмотрите мою подборку

Python, управление файлами | programmer's notes | Дзен

Работу с двоичными файлами.

А вот и функция копирования

Текст программы см. ниже
Текст программы см. ниже
primer88.py

Функция очень простая. Параметр frm содержит путь к исходному файлу, to путь, куда следует копировать. При этом to это именно имя файла.

Имеются две возможности для вас усовершенствовать её.

  1. Обработка возможных ошибок.
  2. Копирование метаданных файла (временные атрибуты, биты доступа и т.д.).

Следующая программа использует функцию cp(), см. выше.

Текст программы см. ниже
Текст программы см. ниже
primer89.py

Функция copytr() копирует дерево каталога. В качестве параметров указывается путь к копируемому каталогу и путь к каталогу, куда будет произведено копирование.

Например

/home/vladislav/Загрузки
./dn

Функция copytr() очень проста. И опять у вас большое поле деятельности. Как можно её усовершенствовать.

  1. Перенос метаданных создаваемых каталогов.
  2. Накопительная обработка ошибок. Т.е. получения списка ошибок копирования и их причин (хорошая работа).
  3. Добавить возможность копирования файлов, на которые указывает символьная ссылка.

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Почему в вашей программе так много goto и нет ни одной функции
Почему в вашей программе так много goto и нет ни одной функции