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
Наконец, считаем все данные до конца файла: