2014-01-17 1 views
0

Почему в цикле python для строки в файле не просматриваются все строки после использования readline раньше? Как добиться этого после прочтения некоторых строк для цикла будет проходить через все строки в файле?Почему в цикле python для строки в файле не просматриваются все строки после использования readline раньше?

file = open("file.xyz", "r") 
first_line = file.readline() 

for line in file: 
    x,y,z = line.split() 

ответ

2

Чтение из файла изменяет «внутренний указатель» на файл для следующей операции чтения. Попытайтесь:

file.seek(0) 

перед тем, как цикл for.

1

Поскольку файл знает свою позицию file.tell.

1

Чтобы вернуться к началу file, используйте

file.seek(0) 

Относительно того, почему это происходит: чтение из файла немного походит на игру ленты, с считывающей головкой, которая перемещается вдоль ленты. После того, как вы прочтете строку из файла, «read head» теперь находится в начале следующей строки. Использование seek позволяет вам «перематывать» и «перемотка вперед» к указанным точкам.

Справка: Python docs.