为什么我的代码没有读第一行?

时间:2016-04-01 14:47:15

标签: python io

with open('index.txt','r') as f:

    a = [int(x) for x in f.readline().split()] 
    array = []
    for line in f: 
        array.append([int(x) for x in line.split()])

print array[0]
print array[1]
print array[2]
print array[3]
print array[4]

输入文件

0
0
100
200
1
101
201
2
102
202
3
103

当我运行我的代码时

[0]
[100]
[200]
[1]
[101]

出现第二个0

2 个答案:

答案 0 :(得分:5)

问题是这一行:

a = [int(x) for x in f.readline().split()] 

这会耗尽文件迭代器的第一行,所以当你遍历其余的行时,你已经消耗了第一行。

要解决此问题,请删除此行代码,或者如果需要,生成文件内容列表(f.readlines())并遍历列表,或者在该行之后回溯到文件开头(f.seek(0))。请注意,如果您的文件特别大,则应避免使用f.readlines(),因为这会将整个文件存入内存。

答案 1 :(得分:0)

如果这个文件只是一个整数列表,那么numpy可能会提供一个更简单的解决方案:

import numpy
array = numpy.loadtxt('index.txt', dtype=int)