我想知道是否有一種簡單的方法,一次只能將一行文件從文件中取出,而不會最終將整個文件加載到內存中。我想用一個attoparsec解析器來完成這一行。我嘗試使用Data.Text.Lazy.IO
和hGetLine
,這讓我的記憶力大打折扣。我後來閱讀,最終加載整個文件。在無緩衝的情況下讀取大文件中的大行
s <- Pipes.sum $
folds (\i _ -> (i+1)) 0 id (view Text.lines (Text.fromHandle handle))
print s
僅計算行數,它似乎是在做一些靠不住的東西「hGetChunk:無效的參數(無效字節序列
我也使用管道文本與folds
和view lines
嘗試)「,需要11分鐘,wc -l
需要1分鐘。我聽說管道文本可能有一些問題與巨大的線? (每行大約1GB)
我真的很樂意提供任何建議,除了新手readLine
怎麼樣都找不到。
謝謝!
您正在使用Pipes.Text.IO進行輸入,而不是像庫建議的那樣使用Pipes.Bytestring +解碼。該錯誤消息來自正在對每個塊進行系統解碼的判斷的文本庫。我認爲它是說它不能根據它認爲的編碼來理解塊。 – Michael