Найти в Дзене
Old Programmer

Работа с файлами Python. Статья 4 (бинарные файлы)

Мой канал о программировании Old Programmer, а здесь: Тематическое оглавление моего Zen-канала (Old Programmer). А тут много материалов по Python. Продолжаем разговор о бинарных файлах, начатый в прошлой статье. Бинарные файлы в языке Python Как мы уже видели, ничего сложного в бинарных файлах нет. Обмен с ними осуществляется через массив bytes. Для понимания обратимся к программе p500.py. Она выдает на консоль коды всех байтов файла. Обращаю внимание на следующие два момента: Разумеется можно читать не только по одному байту: f.read(n), где n количество байтов, которые необходимо прочесть. Если при очередном чтении количество прочитанных байтов (len(b)) окажется меньше n, это значит файл закончился. Бинарные файлы и метод seek Однако прелесть бинарных файлов этим не заканчивается. Там есть замечательный метод seek. Метод имеет два аргумента: В качестве примера иллюстрирующего работу метода seek представлена программа p500a.py, которая читает последние 10 байтов данного файла. В
Оглавление

Мой канал о программировании Old Programmer, а здесь: Тематическое оглавление моего Zen-канала (Old Programmer). А тут много материалов по Python.

Продолжаем разговор о бинарных файлах, начатый в прошлой статье.

Бинарные файлы в языке Python

Как мы уже видели, ничего сложного в бинарных файлах нет. Обмен с ними осуществляется через массив bytes. Для понимания обратимся к программе p500.py. Она выдает на консоль коды всех байтов файла. Обращаю внимание на следующие два момента:

  • Мы читаем файл по одному байту. Метод read, как вы видите может иметь аргумент, показывающий сколько байтов нужно прочесть. Мы указываем 1. Но важно еще то, что при работе с бинарными файлами вводится так называемая текущая позиция. При открытии она равно 0, т.е. указывает на начало файла. При каждом чтении она передвигается на расстояние равное количеству прочитанных байтов. В результате программа читает последовательно все байты файла.
  • Чтение осуществляется в массив bytes - переменная b. При этом массив содержит всегда только один элемент, поскольку мы читаем только один байт. В случае попытки чтения за пределы файла, возвращается b'' - критерий того, что файл закончился. Можно в качестве критерия проверки выхода за конец файла использовать также условие len(b) == 0 или not b.

Разумеется можно читать не только по одному байту: f.read(n), где n количество байтов, которые необходимо прочесть. Если при очередном чтении количество прочитанных байтов (len(b)) окажется меньше n, это значит файл закончился.

Бинарные файлы и метод seek

Однако прелесть бинарных файлов этим не заканчивается. Там есть замечательный метод seek. Метод имеет два аргумента:

  1. Первый аргумент - количество байтов, которые следует сместить текущую позицию в файле. По умолчанию, т.е. когда второй аргумент не указан смещение берется от начала файла. Первый аргумент может принимать и отрицательные значения.
  2. Второй аргумента указывает как следует определять новую позицию в файле: 0 - от начала файла, 1 - от текущей позиции, 2 - от конца файла. Текущую позицию в файле можно определить с помощью метода tell().

В качестве примера иллюстрирующего работу метода seek представлена программа p500a.py, которая читает последние 10 байтов данного файла.

В следующей статье, мы продолжим рассматривать возможности работы с бинарными файлами в Python.

Пока! Программируем на Python 3, подписываемся на мой канал Old Programmer.

Фрагмент программы p500.py
Фрагмент программы p500.py