NodeJS:如何像Python一样逐行读取文件

在Python中,我们可以以一种非常简洁的方式逐行阅读文件:

with open("filename") as fp: for line in fp: #handle your line 

只是好奇在NodeJS / Javascript中是否有类似的方式来实现这一点。

在NodeJS / Javascript中最接近的方式我知道的是:

 var fs = require('fs'); var readline = require('readline'); var stream = require('stream'); var instream = fs.createReadStream("filename"); var outstream = new stream; var rl = readline.createInterface(instream, outstream); rl.on('line', function(line) { // handle your line here }); 

谢谢

德里克

我会build议使用line-by-line npm

读取大文件非常有用,因为它不会缓冲文件数据。

它在收到数据块时暂停stream,为当前块中的所有行发出事件,保留最后一行的剩余部分。 然后它恢复stream,并将剩余部分与新块合并,并重复该过程。

你可以从这里检查它的源代码

下面是代码片段,例如:

 var LineByLineReader = require('line-by-line'), lr = new LineByLineReader('big_file.txt'); lr.on('error', function (err) { // 'err' contains error object }); lr.on('line', function (line) { // pause emitting of lines... lr.pause(); // ...do your asynchronous line processing.. setTimeout(function () { // ...and continue emitting lines. lr.resume(); }, 100); }); lr.on('end', function () { // All lines are read, file is closed now. }); 

你可以使用我的线阅读器库,如果你喜欢: https : //github.com/bilaloguz/secureWebServer/blob/master/line_reader.js

在我的实验中,对于1百万行文本文件,逐行读取和写入控制台需要218秒,而使用Python118秒(Ubuntu 16.04)。