Любая программа, которую мы пишем, так или иначе взаимодействует с внешним миром. Программа на Python может:
- Общаться с операционной системой, чтобы узнать текущее время или свободное место на диске
- Писать и читать файлы в различных форматах
- Взаимодействовать с другими программами через различные средства межпроцессного взаимодействия (IPC или Inter-Process Communication)
Представим, что вы реализуете web-приложение, пользователь которого может загружать изображения и просматривать как в оригинальном размере, так и в виде галереи миниатюр (уменьшенных копий изображений). Не правда ли, задача вполне реалистична. Подумаем, какие виды взаимодействия будет использовать программа на Python, выступающая в роли сервера. Когда пользователь выберет файл в браузере и нажмет кнопку «отправить», программа:
- Примет запрос (произойдет взаимодействие с сетью)
- Проверит наличие доступного места на диске (спросит об этом у операционной системы)
- Запишет файл изображения на диск
- Вызовет программу, которая сформирует для загруженного изображения миниатюру (IPC с дочерним процессом через буферы стандартного ввода-вывода stdin/stdout)
- Сохранит на диске миниатюру
- Обратится к серверу базы данных и отправит ему запрос на добавление информации о загруженном изображении и его местоположении
- Сформирует ответ для пользователя в виде web-страницы, шаблон для которой считает с диска
- Отправит пользователю ответ (через сеть)
Это далеко не полный список операций ввода-вывода (Input-Output, IO), которые выполняет даже сравнительно простой сервер web-приложения. Но и программы, работающие с данными, используемые при администрировании систем, отображающие графический интерфейс пользователя (Graphic User Interface, GUI) — все так или иначе осуществляют ввод-вывод. И насколько много существует видов взаимодействия с миром у программ, настолько много средств для этого предоставляет любой серьезный язык программирования. Наиболее важные возможности для IO в Python мы изучим в последующих курсах.
Стоит помнить, что любой программист должен уметь программировать IO. И должен делать это хорошо! Ведь если загрузка очередной картинки сотрет все данные на диске или удалит все записи из базы данных, никто не обрадуется.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты