Python:为什么readline()函数不适用于文件循环

时间:2015-08-24 11:41:24

标签: python

我有以下代码:

#!/usr/bin/python

f = open('file','r')

for line in f:
    print line 
    print 'Next line ', f.readline()
f.close()

这给出了以下输出:

This is the first line

Next line
That was the first line
Next line

为什么readline()函数在循环中不起作用?它不应该打印文件的下一行吗?
我使用以下文件作为输入

This is the first line
That was the first line

2 个答案:

答案 0 :(得分:6)

你正在弄乱文件迭代的内部状态,因为出于优化原因,迭代文件将以块为单位读取它,并对其执行拆分。明确的readline() - 调用将被此混淆(或混淆迭代)。

要实现您的目标,请将迭代器显式化:

 import sys

 with open(sys.argv[1]) as inf:
     fit = iter(inf)
     for line in fit:
         print "current", line
         try:
             print "next", fit.next()
         except StopIteration:
             pass

答案 1 :(得分:0)

使用这个

for i, line in enumerate(f):
    if i == 0 :
         print line
    else:
         print 'NewLine: %s' % line