УТИЛИТА ДЛЯ СОРТИРОВКИ ЗАПИСЕЙ В JSON ФАЙЛАХ
1. Постановка задачи
Задача заключается в том, чтобы создать утилиту, которая читает записи из заданного JSON-файла, сортирует их и записывает их обратно в файл. Позволяет выбрать различные варианты сортировки (по убыванию, по возрастанию) и название поля, по которому происходит сортировка. Должна быть предусмотрена обработка ошибок при вводе информации пользователем.
2. Инструкция по работе с программой
• Что команда принимает на вход:
Моя программа принимает на вход данные введённые пользователем, а именно: поле для сортировки и параметр сортировки
• Какие действия выполняет:
Считывает файл проверяет его на ошибки, сортирует данные из файла, а дальше записывает данные в отдельный файл
• Что получается на выходе:
Отсортированные данные будут записаны обратно в файл, в ином случае будет выведена соответствующая ошибка. То есть, при возникновении ошибок при чтении или записи файла, программа выведет соответствующее значение. Если используется ООП – привести диаграмму классов.
Я использую ООП в своем проекте. Основным фигурирует класс Sorter.
• Sorter - класс Sorter, который основной и единственный
• file_path – это приватное поле, которое хранит путь к JSON-файлу.
• data – это тоже приватное поле, которое будет хранить данные из файла в виде списка.
• read() – это метод для чтения данных из JSON-файла. Он открывает файл, загружает данные и проверяет их на соответствие ожидаемому формату.
• sort() – это один из самых выжных методов в классе, он сортирует данные по указанному полю, проверяет, есть ли данные, затем фильтрует их и сортирует по заданному полю, также может выполнять сортировку в обратном порядке.
• write() – это метод для записи отсортированных данных обратно в JSON-файл.
Ошибки в программе обработаны с помощью try-except:
FileNotFoundError - данная ошибка возникает, когда программа не может найти файл по указанному пути. Данная ошибка обрабатывается в методе read() и выводит пользователю, что файл не найден.
ValueError – это ошибка, которая возникает в случае, если программа ожидает определенный тип данных, но не получает их. Данная ошибка обрабатывается в методе read() и выводит сообщение, что произошла ошибка при чтении файла.
KeyError - ошибка, которая возникает, когда программа пытается получить доступ к ключу словаря, которого не существует. То есть, если указанное пользователем поле для сортировки не найдено в данных, программа сообщает, что поле не найдено. Данная ошибка обрабатывается в методе sort().
IOError - ошибка, которая возникает при проблемах с вводом-выводом, например, при записи файла. Если произойдет ошибка ввода-вывода при записи, программа выведет соответствующее сообщение об ошибке. Данная ошибка обрабатывается в методе write().
Ошибки обрабатываться внутри каждого метода и помогут пользователю избежать и понять технические неполадки.
3. Результаты тестирования программы
В настоящем разделе рассмотрим действия пользователя по вводу данных и команд и отклик программы на них. Программа выполняет техническую функцию по убыванию и возрастанию. Соответственно, пользователю необходимо ввести следующие данные:
file_path = input("Введите путь к JSON-файлу для сортировки: ") sort_field = input("Введите поле для сортировки: ") reverse_sort_input = input("Хотите выполнить сортировку по убыванию? (Введите 'yes' или 'no'): ") reverse_sort = reverse_sort_input.lower() == "yes"
sorter = Sorter(file_path)
sorter.read()
sorter.sort(sort_field, reverse=reverse_sort)
sorter.write()
На вход программы подаётся путь к файлу-формата JSON (соответственно проверяеться есть ли такой файл), указывается поле для сортировки и вариант сортировки то есть либо по убыванию либо по возрастанию.
Рассмотрим на примере:
Используем простой по структуре файл JSON:
[ { "firstName":"Marge", "lastName":"Simpson", "age":33 }, { "firstName":"Homer", "lastName":"Simpson", "age":44 }]
Укажем программе путь к данному файлу и настроим соответствующие поля для сортировки, для этого используем поле "age". При сортировке по убыванию, получим следующую запись в файле:
[{"firstName": "Marge", "lastName": "Simpson", "age": 44}, {"firstName": "Homer", "lastName": "Simpson", "age": 33}]
При сортировке по возрастанию, запись в файле будет выглядит следующим образом:
[{"firstName": "Marge", "lastName": "Simpson", "age": 33}, {"firstName": "Homer", "lastName": "Simpson", "age": 44}]
Вышеуказанные варианты работают в случае верно введенных данных пользователем. Но, если у пользователя или софта «руки растут не из того места», то отрицательных результатов может быть великое множество). Проверено на собственном горьком опыте (.
Утилита для сортировки призвана облегчать работу с файлами данных и ускорять процесс получения необходимого результата.