строку, созданную путем объединения двух строк, что позволило ей разместить-
ся на странице, в переменную типа bytes с именем gif:
'47494638396101000100800000000000ffffff21f9' +
'0401000000002c000000000100010000020144003b'
Упражнения
209
13. Байты, содержащиеся в переменной gif, определяют однопиксельный прозрач-
ный GIF-файл. Этот формат является одним из самых распространенных.
Корректный файл формата GIF начинается со строки GIF89a. Является ли этот
файл корректным?
14. Ширина файла формата GIF является шестнадцатибитным целым числом с об-
ратным порядком байтов, которое начинается со смещения 6 байт. Его высота
имеет такой же размер и начинается со смещения 8 байт. Извлеките и выведите
на экран эти значения для переменной gif. Равны ли они 1?
8 Данные должны
куда-то попадать
Огромная ошибка — делать выводы, не имея
необходимой информации.
Артур Конан Дойль
Активная программа работает с данными, которые хранятся в запоминающем
устройстве с произвольным доступом (Random Access Memory (RAM)). RAM —
очень быстрая память, но она дорога и требует постоянного питания; если питание
пропадет, то все данные, которые в ней хранятся, будут утеряны. Жесткие диски
медленнее оперативной памяти, но они более емкие, стоят дешевле и могут хранить
данные даже после того, как кто-то выдернет шнур питания. Поэтому много усилий
при создании компьютерных систем направлено на поиск лучшего соотношения
между хранением данных на диске и в оперативной памяти. Как программистам,
нам нужна стойкость: хранение и получение данных с помощью энергонезависи-
мых медиа вроде дисков.
Эта глава посвящена разнообразным способам хранения данных, каждый из
которых оптимизирован для разных целей: плоским файлам, структурированным
файлам и базам данных. Операции с файлами, не касающиеся ввода-вывода, рас-
сматриваются в разделе «Файлы» главы 10.
В этой главе также будут показаны первые примеры использования нестандартных модулей
Python — да-да, этот код не входит в стандартные библиотеки Python. Вы можете без особых
проблем установить их с помощью команды pip. Более подробно об использовании этих
модулей вы можете прочитать в приложении Г.
Ввод информации в файлы
и ее вывод из них
Самый простой пример стойкого хранилища — это старый добрый файл, иногда
его еще называют плоским файлом. Он представляет собой последовательность
байтов, которая хранится под именем файла. Вы считываете данные из файла
Ввод информации в файлы и ее вывод из них
211
в память и записываете данные из памяти в файл. Python позволяет делать это
довольно легко. Операции с файлами, присутствующие в этом языке программи-
рования, были смоделированы на основе знакомых и популярных аналогов, име-
ющихся в Unix.
Перед тем как что-то записать в файл или считать из него, вам нужно открыть