Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 165

>>> len(bdata)

1

>>> bdata[0]

255

Функция seek() также возвращает текущее смещение.

Вы также можете вызвать функцию seek(), передав ей второй аргумент: seek( offset,

origin):

 если значение origin равно 0 (по умолчанию), сместиться на offset байт с на-

чала файла;

 если значение origin равно 1, сместиться на offset байт с текущей позиции;

 если значение origin равно 2, сместиться на offset байт с конца файла.

Эти значения также определены в стандартном модуле os:

>>> import os

>>> os.SEEK_SET

0

>>> os.SEEK_CUR

1

>>> os.SEEK_END

2

Благодаря этому мы можем считать последний байт разными способами:

>>> fin = open('bfile', 'rb')

Один байт перед концом файла:

>>> fin.seek(-1, 2)

255

>>> fin.tell()

255

Считать данные до конца файла:

>>> bdata = fin.read()

>>> len(bdata)

1

>>> bdata[0]

255

Вам не нужно вызывать функцию tell(), чтобы работала функция seek(). Я только хотел по-

казать, что обе эти функции возвращают одинаковое смещение.

218

Глава 8. Данные должны куда-то попадать

Рассмотрим случай, когда мы вызываем функцию seek(), чтобы сместиться

с текущей позиции:

>>> fin = open('bfile', 'rb')

Следующий пример переносит позицию за 2 байта до конца файла:

>>> fin.seek(254, 0)

254

>>> fin.tell()

254

Теперь перейдем вперед на 1 байт:

>>> fin.seek(1, 1)

255

>>> fin.tell()

255

Наконец, считаем все данные до конца файла: