1. # Импортируем модуль os для работы с файловой системой (пути, проверка существования папок/файлов)
  2. import os
  3. # Импортируем модуль json для чтения и вывода JSON-файлов
  4. import json
  5.  
  6. # Просим врача ввести ФИО пациента. Текст приглашения выводится через input, а не через print.
  7. # Результат сохраняем в переменную full_name_input
  8. full_name_input = input("Enter the full name of the patient separated by space (Ivanov Ivan Ivanovich)\n")
  9. # Просим врача ввести дату приёма, который он хочет посмотреть. Тоже через input.
  10. # Результат сохраняем в переменную visit_date
  11. visit_date = input("Enter the date of the appointment you want to see\n")
  12.  
  13. # Разбиваем введённую строку ФИО по пробелам на отдельные части (фамилия, имя, отчество).
  14. # .strip() убирает лишние пробелы по краям, .split() делит строку по пробелам в список.
  15. parts = full_name_input.strip().split()
  16. # Формируем имя папки пациента: каждое слово приводим к виду "С большой буквы" через .capitalize(),
  17. # чтобы регистр ввода не влиял на поиск, и соединяем слова символом "_".
  18. patient_folder = "_".join(part.capitalize() for part in parts)
  19.  
  20. # Собираем полный путь до папки пациента: "patients/{Ф_И_О}".
  21. # os.path.join корректно склеивает части пути для любой ОС.
  22. patient_path = os.path.join("patients", patient_folder)
  23.  
  24. # Проверяем, существует ли папка с таким пациентом (os.path.isdir возвращает True, если это папка).
  25. if not os.path.isdir(patient_path):
  26. # Если папки нет — выводим сообщение об ошибке.
  27. print("there is not such patient!")
  28. else:
  29. # Если папка есть — формируем путь до файла card.json внутри неё.
  30. card_path = os.path.join(patient_path, "visits", "card.json")
  31. # Проверяем, существует ли файл card.json (os.path.isfile возвращает True, если это файл).
  32. if os.path.isfile(card_path):
  33. # Открываем файл card.json на чтение с кодировкой utf-8, чтобы корректно читать кириллицу.
  34. with open(card_path, "r", encoding="utf-8") as f:
  35. # Загружаем содержимое JSON-файла в словарь Python.
  36. card_data = json.load(f)
  37. # Выводим содержимое карты пациента в читаемом виде:
  38. # ensure_ascii=False — чтобы русские буквы не превращались в \uXXXX,
  39. # indent=4 — отступ в 4 пробела для красивого форматирования.
  40. print(json.dumps(card_data, ensure_ascii=False, indent=4))
  41. else:
  42. # Если файла card.json нет — выводим сообщение об отсутствии приёма.
  43. print("There was no such appoinment with the doctor")
  44.  
  45. # Формируем путь до файла приёма по введённой дате: "patients/{Ф_И_О}/visits/{дата}".
  46. visit_path = os.path.join(patient_path, "visits", visit_date)
  47. # Проверяем, существует ли файл приёма с такой датой.
  48. if os.path.isfile(visit_path):
  49. # Открываем файл приёма на чтение с кодировкой utf-8.
  50. with open(visit_path, "r", encoding="utf-8") as f:
  51. # Читаем всё содержимое файла и выводим его на экран.
  52. print(f.read())
  53. else:
  54. # Если файла приёма с такой датой нет — выводим сообщение об ошибке.
  55. print("There was no such appoinment with the doctor")