2016-12-30 16 views
3

Я хочу загрузить большой файл по строкам в Nim. Я попробовал следующий фрагмент кода:Как загрузить файл строки за строкой в ​​Nim?

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

Однако это загружает весь файл largefile.txt в память, которая не представляется возможным, если файл очень большой> 30GB.

Как я могу перебирать большой файл, сохраняя только одну строку в памяти?

+0

Я не уверен, как это произойдет, если вы не импортируете нестандартный итератор строк. Тот [в lib/system.nim] (https://github.com/nim-lang/Nim/blob/09b6d8c0ca5f9b5590e58d90b987975f36df8dd6/lib/system.nim#L3044) читает файл по строкам так же, как вы этого хотите. И когда я тестирую, что с большим файлом, использование памяти остается постоянным, как и ожидалось. –

ответ

2

Действительно, Реймер Берендс прав. Функция lines работает должным образом.

Проблема заключалась в том, что в моем файле были только символы новой строки. В результате Nim (правильно) считывает файл как одну большую строку.