for line in file:
...
является сокращением для
for line in iter(file.readline, ""):
...
Таким образом, вы можете видеть, что на самом деле он вызывает readline, который перемещает текущую позицию файла так же, как и другие файловые операции.Он не вернется к началу файла при повторной итерации, если вы не установите текущую позицию вручную, например:
yourfile.seek(0)
Также, если вы не хотите искать с последней позиции, ноне с самого начала, 2 «for..in ..» также не очень хороший способ, потому что он может иметь буфер, правильный путь к этому:
it = iter(file)
for line in it:
if line == "\n":
break
for line in it:
print line,
Пожалуйста, обратитесь к PEP234 дляподробнее об этом: http://www.python.org/dev/peps/pep-0234/ Это объясняет, как работают разные типы итераторов.И что происходит, когда вы перебираете файл.