Задание
Задачи, помеченные звёздочкой, необязательны.
1
Реализуйте задачу, которую мы рассматривали на лекции.
Напишите в репозитории скрипт join.py. Скрипт получает три позиционных параметра: имя первого входного файла, имя второго входного файла, имя выходного файла.
Каждый из файлов записан в формате CSV, т.е. это список значений через запятую.
Задача: записать в выходной файл объединение тех строк из первых двух файлов, для которых первое значение совпадает.
Например, если первый файл такой:
1,2,3 4,5,6 7,8,9
а второй файл такой:
7,a,b 5,c,d 4,e,f
то в выходной файл должно попасть:
4,5,6,4,e,f 7,8,9,7,a,b
2*
Сделайте скрипт join.py более удобным: у скрипта можно опускать выходной файл (тогда он будет писать на стандартный вывод), добавьте скрипту параметры:
-d / --delimiter – знак, которым разделяются ячейки в строке (по умолчанию из прошлой задачи ",")
-c / --condition – условие отождествления строк; условие имеет вид: номер колонки в первом файле = номер колонки во втором файле
-a / --left-fields – список полей из первого файла, которые попадают в выдачу (список чисел через запятую)
-b / --right-fields – список полей из второго файла, которые попадают в выдачу (список чисел через запятую)
-o / --outfile – имя выходного файла
3*
Поправьте каждую из реализованных у Вас программ таким образом, чтобы она использовала исключения всюду, где это осмысленно.
А именно:
- функции min выбрасывают исключение для пустого списка
- функции fact выбрасывают исключение для отрицательных чисел
- скрипты из 6-го и 8-го заданий выдают человекопонимаемые сообщения об ошибках, а не распечатки стека вызовов