这是我正在运行的代码:
with open('test.txt','r') as fin:
for i,line in enumerate(fin):
print i
print fin.next()
'test.txt' 在哪里:
5
9 6
4 6 8
0 7 1 5
我得到的输出是:
0
9 6
1
0 7 1 5
我很困惑为什么要跳过“4 6 8”行。我希望第 2 行在第一次迭代时打印,第 3 行在第二次迭代时打印,第 4 行在第三次迭代时打印。
相反,我在第二次迭代时得到第 4 行。
请您参考如下方法:
这是因为当你执行 for i,line in enumerate(fin) 时,对 enumerate 的调用已经在调用 fin.next()引擎盖下。因此,当您稍后手动调用 fin.next 时,您会在已经处理的行之后得到下一行。这就是为什么您似乎跳过了行。
如果您想观察更多这种行为,请查看以下代码片段产生的输出:
L1 = [1,2,3,4]
L2 = ['a', 'b', 'c', 'd']
print zip(L1, L2)
输出是:
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
将其与以下代码段进行比较:
with open('test.txt','r') as fin:
print zip(fin, fin)
输出在哪里:
[('1 2 3 4\n' , 'a b c d \n')]
现在您明白为什么您的输出似乎在跳行了吗?
