2017-02-17 24 views
-1

一個塊我有格式化這樣一個非常大的文件:讀入文件,同時

(mydelimiter) 
line 
line 
(mydelimiter) 
line 
line 
(mydelimiter) 

由於該文件是如此之大,我不能讀這一切到內存中一次。因此,我想每次讀取「(mydelimiter)」之間的每個塊,對其執行一些操作,然後讀取下一個塊。

這是我的代碼至今:

with open(infile,'r') as f: 
    chunk = [] 
    for line in f: 
     chunk.append(line) 

現在,我不知道如何告訴蟒蛇「不斷追加行,直到你在它擊中‘(mydelimiter)’另一條線」,然後在for循環的下一次迭代中保存它停止的行abd start。

注意:由於每個塊都是可變長度,因此一次不能讀取一定數量的行。

+0

請鏈接到任何你認爲我有重複的問題。在發佈這個問題之前,我已經徹底搜索了stackoverflow並沒有找到答案。 – Andrade

+0

鏈接位於頁面頂部,位於問題標題下方。 – TigerhawkT3

回答

1

難道你不是在想這個嗎?像下面的代碼一樣簡單可以爲你做的伎倆

with open(infile,'r') as f: 
    chunk = [] 
    for line in f: 
     if line == 'my delimiter': 
      call_something(chunk) 
      chunk=[] 
     else : 
      chunk.append(line) 
+0

感謝您的迴應!你能澄清一下你的call_something()函數在這裏做什麼嗎? – Andrade

+0

well call_something是你定義的一個函數,可用於你的大塊數據 – e4c5

+0

是的,謝謝!剛接受你的回答(道歉忘記這個!) – Andrade