我有以下代码:
#!/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
答案 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