Я повторяю строки в файле, используя Node.js с CoffeScript и следующую функцию:
each_line_in = (stream, func) ->
fs.stat stream.path, (err, stats) ->
previous = []
stream.on 'data', (d) ->
start = cur = 0
for c in d
cur++
if c == 10
previous.push(d.slice(start, cur))
func previous.join('')
previous = []
start = cur
previous.push(d.slice(start, cur)) if start != cur
Есть ли лучший способ сделать это без чтения всего файла в память? Под «лучше» я подразумеваю более сжатый, встроенный в Node.js, более быстрый или Правильнее. Если бы я писал Python, я бы сделал что-то вроде этого:
def each_line_in(file_obj, func):
[ func(l) for l in file_obj ]
Я видел это вопрос который использует "ленивый" Петериса Крумина модуль , но я бы хотел выполнить это без добавления внешней зависимости.