Bir node.js bir defada bir satır dosya okuma?
2015 güncelleştirinStabil ve virüssüz haline gelen da 0,12 Düğümü doğal yolu Dan Dascalescu's answer gör - Düğüm 4.0 mevcuttur.
2014 güncelleştirme: özgün cevap akışı http://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/ dönüşüm yeni ateşli bir itiraz (yorumları oku) görünüşte gibi görünüyor.
Bir anda büyük dosya tek bir satırı okumak için çalışıyorum. Konuyu ele Quora bir soru buldum ama bazı bağlantılar her şeyi birbirine uygun yapmak için kaçırıyorum. (Quora cevap link: 10**)
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
Anlamak istediğim, bu örnekteki gibi STDİN yerine bir dosyadan bir defada bir satır okurum diye.
Denedim:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
ama işe yaramıyor. Bir tutam PHP gibi bir şey kullanarak tekrar aşık olabileceğimi biliyorum, ama bunu çözmek istiyorum.
Diğer cevap dosyası için bellek var koşuyorum sunucu çok daha büyük olduğu için işe yarayacağını sanmıyorum.
EDİT Raynos tarafından sunulan test çözümü aşağıda:
var lazy = require("lazy"),
fs = require("fs");
new lazy(fs.createReadStream('./MyVeryBigFile.csv'))
.lines
.forEach(function(line){
console.log(line.toString());
}
);
CEVAP
Böyle basit bir işlem için üçüncü parti modüller üzerinde herhangi bir bağımlılık olmamalı. Kolay.
var fs = require('fs'),
readline = require('readline');
var rd = readline.createInterface({
input: fs.createReadStream('/path/to/file'),
output: process.stdout,
terminal: false
});
rd.on('line', function(line) {
console.log(line);
});
Python: okuma diziye satır satır dosya...
Bash Betik yazma Ve Okuma satır satır ...
Python ile yeni satır ile ayrılmış dos...
C# Satır Satır Dosya Okuma...
Neden Standart girdiden okuma satır Py...