0

我想读取 100 到 100 的大数据文件。但我的脚本只读取前 100 行,然后它永远不会进入“for 循环”其余部分。更清楚的是,最后,我只得到从 0 到 100 的行,但我也想要 100-200、200-300、300-400 等。我看不出问题出在哪里。

(我使用python 3.4。.csv文件中的所有数据都是数字。我已经知道要使用islice()但我特别想使用enumerate()函数。)

如果您能提供帮助,我将非常高兴。

pathInput = "input.csv"
f = open(pathInput, 'r')
sizeOfList = 100
iD = 0
while iD<1000:
    dataset = []
    for i, line in enumerate(f):
       if i<(iD + sizeOfList):
           dataset.append(line)
    print(dataset)
    iD += sizeOfWindow
4

1 回答 1

0

基本上,文件对象不是一个列表,但它有一个光标移动到文件的末尾,就像read所谓的那样(enumerate基本上是这样)。光标基本上位于文件的末尾,因此在第二个循环中不再可以读取任何内容。

有两种方法可以解决这个问题:

1)首先将整个文件读入内存,并将enumerate调用转换为一个列表,例如:

pathInput = "input.csv"
f = open(pathInput, 'r')
idx_line = enumerate(f)
id = 0
while id < 1000:
    dataset = []
    for idx, line in items:
        ...

2) 调用seek文件对象以在调用enumerate(f).

while id < 1000:
    f.seek(0)
    dataset = []

另请参阅:

但是,鉴于您可能有一个 CSV 文件,您可能想尝试以下操作:

于 2018-05-03T10:11:45.160 回答