2016-12-30 12 views
3

Nimに行単位で大きなファイルをロードしたい。私は、次のコードスニペットを試してみました:Nimに1行ずつファイルをロードする方法は?

for line in lines "largefile.txt": 
    echo line 

しかし、これはファイルが非常に大きい> 30ギガバイトときに実行不可能であるメモリにファイル全体largefile.txtをロードします。

メモリ内の1行だけを保持しながら大きなファイルを反復処理するにはどうすればよいですか?

+0

非標準の 'lines'イテレータをどこかにインポートしない限り、どうなるかわかりません。 lib/system.nim(https://github.com/nim-lang/Nim/blob/09b6d8c0ca5f9b5590e58d90b987975f36df8dd6/lib/system.nim#L3044)のファイルは、あなたが望むのと同じように、行単位でファイルを読み込みます。そして、大きなファイルを使ってそれをテストしているとき、メモリ使用量は期待どおり一定に保たれます。 –

答えて

2

実際、ライマー・ベーレンズは正しいです。 lines関数は期待どおりに機能します。

問題は、私のファイルが改行文字だけをエスケープしていたことでした。その結果、Nimは(正しく)ファイルを1つの大きな行として読み込みます。

関連する問題