Перейти к основному содержимому

Домашнее задание 1: CLI-утилиты

📚 Лекции: Модель данных Python | Виртуальные среды и пакетные менеджеры

Дедлайн

8 дней с момента занятия.

Вам нужно реализовать CLI-приложения. Кроме кода, вам необходимо в качестве артефактов приложить текстовый файл, как вы проверяли работоспособность вашего кода (просто копия команд и выводов из терминала).

Задача 1.1: Утилита nl

Написать упрощённый вариант утилиты nl — скрипт, который выдаёт в stdout пронумерованные строки из файла.

Если файл не передан, то скрипт читает строки из stdin.

Он должен работать так же, как nl -b a.

Задача 1.2: Утилита tail

Написать упрощённый вариант утилиты tail — скрипт, выводящий в stdout последние 10 строк каждого из переданных файлов.

  • Если передано больше одного файла, то перед обработкой очередного файла необходимо вывести его имя. Подробности смотрите в оригинальной утилите tail, ваш скрипт должен повторять форматирование.
  • Если не передано ни одного файла, то нужно вывести последние 17 строк из stdin.

Задача 1.3: Утилита wc

Написать скрипт, работающий так же, как утилита wc, вызванная без дополнительных опций. Т.е. для каждого переданного файла утилита выводит статистику (3 числа) и имя файла.

При этом:

  • Если передано больше одного файла, то в самом конце утилита выводит суммарную статистику (total).
  • Если ни одного файла не передано, то утилита считывает весь вход и печатает для него статистику без имени.