我想用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
答案 0 :(得分: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文件,您可能需要尝试以下操作: