В комментариях я осознал нашу ошибку ... Условие while data
требует, чтобы вы прочитали кусок текста, я думаю, что правильным способом будет использование цикла while True
и разрыв по завершении.
# list to store results.
keys = []
# I used a with context manager to ensure file.close()
with open('data.txt') as f:
while True:
# read the current pointer and store it into the keys list
pos = f.tell()
keys.append(pos)
# now I check if there is some data left, if not then break
data = f.readline()
if not data:
break
, таким образом, сохраняется и конечный (конечный) pos
, если вы хотите только начало строки, используйте это
# list to store results.
keys = []
# I used a with context manager to ensure file.close()
with open('data.txt') as f:
while True:
# read the current pointer and store it into the keys list
pos = f.tell()
# now I check if there is some data left, if not then break
data = f.readline()
if not data:
break
# if we didn't break then we store the pos
keys.append(pos)