Skip to content

Andrey-Zobnin/ProjectOfJson

Repository files navigation

УТИЛИТА ДЛЯ СОРТИРОВКИ ЗАПИСЕЙ В 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 с передачей аргумента file_path

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}]

Вышеуказанные варианты работают в случае верно введенных данных пользователем. Но, если у пользователя или софта «руки растут не из того места», то отрицательных результатов может быть великое множество). Проверено на собственном горьком опыте (.

Утилита для сортировки призвана облегчать работу с файлами данных и ускорять процесс получения необходимого результата.

About

My inital project wit wor og json sorting and use this data

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published