我已經選擇this,this和this。Python - 一次從文件讀取1000行
第三個鏈接似乎有答案,但它沒有做這項工作。
我不能有一個解決方案將整個文件帶到主內存中,因爲我將要使用的文件將非常大。所以我決定使用islice
,如第三個鏈接所示。前2個鏈接是不相關的,因爲他們只用了2行或讀了1000個字符。而我需要1000行。for now N is 1000
我的文件包含百萬線:
樣品:
1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
所以,如果我一次讀取1000行,我應該通過while
1000
倍,但是當我打印p
來檢查我已經進行了多少次,它並不停止在1000
。它在運行我的程序1400
秒後達到19038838
!
CODE:
def _parse(pathToFile, N, alg):
p = 1
with open(pathToFile) as f:
while True:
myList = []
next_N_lines = islice(f, N)
if not next_N_lines:
break
for line in next_N_lines:
s = line.split()
x, y, w = [int(v) for v in s]
obj = CoresetPoint(x, y)
Wobj = CoresetWeightedPoint(obj, w)
myList.append(Wobj)
a = CoresetPoints(myList)
client.compressPoints(a) // This line is not the problem
print(p)
p = p+1
c = client.getTotalCoreset()
return c
我在做什麼錯?
了'F'可能是不消耗,所以你最終會每次讀取相同,相同的1000線。這永遠不會終止。你必須使用替代配方'islice'('itertools.islice(迭代器,啓動,停止[,步])'這一個,而不是'itertools.islice(迭代器,停止)'這個) –