Задача курса
Python: Организатор артефактов сборки
Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «pathlib: безопасная работа с путями и файловой системой»
Условие
Организатор артефактов сборки
Ты пишешь скрипт, который организует артефакты сборки: читает исходные файлы из входной директории, распределяет их по поддиректориям выходной директории в зависимости от расширения и записывает манифест.
Что уже дано
Проверяющая система скрыто создаёт входную директорию dist/ с несколькими файлами. Все файлы и директории создаются до выполнения твоего кода в том же рабочем каталоге.
Доступные имена после скрытой подготовки: файловая система с директорией dist/, содержащей файлы app.py, utils.py, readme.txt, notes.txt, data.json.
Что нужно сделать
Напиши верхнеуровневый скрипт, который использует pathlib.Path (без строковой конкатенации путей) и выполняет следующее:
- Создай директорию
output/python/иoutput/text/черезmkdirс нужными аргументами — даже если они уже существуют, ошибки быть не должно. - Для каждого файла в
dist/(используйPath.iterdir()):
- если расширение
.py— прочитай содержимое черезread_text(encoding='utf-8')и запиши его вoutput/python/<имя_файла>черезwrite_text(encoding='utf-8'); - если расширение
.txt— прочитай содержимое и запиши вoutput/text/<имя_файла>; - файлы с другими расширениями игнорируй.
- Создай файл
output/manifest.txtчерезwrite_text, записав в него строки вида<имя_файла>для каждого скопированного файла, по одному на строку, в алфавитном порядке имён файлов.
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно.
Твой код читает файлы из директории dist/ и создаёт структуру output/ в рабочем каталоге. Проверяющая система после выполнения твоего кода читает созданные файлы и проверяет их содержимое.
Пример использования
print((Path("output") / "manifest.txt").read_text(encoding="utf-8"))
Результат:
app.py notes.txt readme.txt utils.py
