Ключевые аспекты разработки на Python

Теория: Ввод/вывод

io

Любая программа, которую мы пишем, так или иначе взаимодействует с внешним миром. Программа на Python может:

  • Общаться с операционной системой, чтобы узнать текущее время или свободное место на диске
  • Писать и читать файлы в различных форматах
  • Взаимодействовать с другими программами через различные средства межпроцессного взаимодействия (IPC или Inter-Process Communication)

Представим, что вы реализуете web-приложение, пользователь которого может загружать изображения и просматривать как в оригинальном размере, так и в виде галереи миниатюр (уменьшенных копий изображений). Не правда ли, задача вполне реалистична. Подумаем, какие виды взаимодействия будет использовать программа на Python, выступающая в роли сервера. Когда пользователь выберет файл в браузере и нажмет кнопку «отправить», программа:

  • Примет запрос (произойдет взаимодействие с сетью)
  • Проверит наличие доступного места на диске (спросит об этом у операционной системы)
  • Запишет файл изображения на диск
  • Вызовет программу, которая сформирует для загруженного изображения миниатюру (IPC с дочерним процессом через буферы стандартного ввода-вывода stdin/stdout)
  • Сохранит на диске миниатюру
  • Обратится к серверу базы данных и отправит ему запрос на добавление информации о загруженном изображении и его местоположении
  • Сформирует ответ для пользователя в виде web-страницы, шаблон для которой считает с диска
  • Отправит пользователю ответ (через сеть)

Это далеко не полный список операций ввода-вывода (Input-Output, IO), которые выполняет даже сравнительно простой сервер web-приложения. Но и программы, работающие с данными, используемые при администрировании систем, отображающие графический интерфейс пользователя (Graphic User Interface, GUI) — все так или иначе осуществляют ввод-вывод. И насколько много существует видов взаимодействия с миром у программ, настолько много средств для этого предоставляет любой серьезный язык программирования. Наиболее важные возможности для IO в Python мы изучим в последующих курсах.

Стоит помнить, что любой программист должен уметь программировать IO. И должен делать это хорошо! Ведь если загрузка очередной картинки сотрет все данные на диске или удалит все записи из базы данных, никто не обрадуется.

Завершено

0 / 7