Как использовать sizehint и seek
Здраствуйте! Читаю по байтно файл(структура файла 144 байт данных + 10 байт заголовок(что бы это не значило). Задача сейчас прочесть первые 144 байт и следующие 144 байта(т.е. 1-144 и 154-298 надеюсь правильно посчитал). Для подсчёта до 298 байт мне нужна функция sizehint, а для того, что бы убрать заголовок seek. Но я не знаю куда их поставить, что бы они работали.
filehandle = open(myfile,'rb')
while True:
# читаем одну строку
filehandle.sizehint(144)
line = filehandle.readline()
if not line:
break
#print(line)
Ответы (1 шт):
У вас какая-то мешанина в вопросе. Во-первых так и непонятно, какого размера у вас что и как оно расположено, из того, что написано у меня не сложилась однозначная картина. Во-вторых вы пытаетесь читать двоичный файл по строкам (?!), так не делается. По строкам читают текстовые файлы, а двоичные читают побайтово, там не различают никаких переводов строк и прочих управляющих символов, только количество читаемых байт.
Таким образом, работа с вашим файлом должна выглядеть таким образом, на мой взгляд. Заголовок обычно идёт сначала, потом идут данные. Так что заголовок пропускаем, если он вам не нужен, и читаем данные:
header_size = 10
data_size = 144
with open(myfile,'rb') as f:
f.seek(header_size, 0) # пропускаем заголовом
data = f.read(data_size) # читаем данные
#print(data)
Параметр sizehint используется с readline, так что он вам вообще не нужен.