You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js读取Pile语料百万行时输出内容错位问题求助

问题:Node.js读取Pile语料库100万行数据时出现行内容错位

尝试使用Node.js从Pile语料库中正确读写100万行数据,但遇到问题:输出文件虽有100万行,但第100万行却是原文件中约90万行的内容。

初始使用的代码如下:

fs = require("fs");

var buffer = '';
var rs1 = fs.createReadStream('00.jsonl',"ascii");
var ws = fs.createWriteStream('pile_1M.txt', {flags: 'w',encoding: 'ascii'});
var lines_num=0;

var max_read=1000000;

rs1.on('data', function(chunk) {
    rs1.pause()
  
    var lines = (buffer+chunk).split(/\r?\n/g);
  
    for (var i = 0; i < lines.length && lines_num<max_read; ++i) {
        lines_num++;     
        ws.write(lines[i]+"\n");
    }
         
    if(lines_num>=max_read){
        rs1.close()
        console.log("close");    
    } 
    
    rs1.resume(); 
    
});

rs1.on('close', function () {
    ws.close();       
});

编辑补充:

感谢@jfriend00的帮助,我得出了以下可行解决方案:

fs = require("fs");

var buffer = '';
var rs1 = fs.createReadStream('/media/user/hdd2/pile/00.jsonl',"utf-8");
var ws = fs.createWriteStream('pile_1M_2.txt', {flags: 'w',encoding: 'utf-8'});
var lines_num=0;

var max_read=100000;

function json_line_to_text(line){
    var index=line.indexOf(', "meta": {"');
    var res=line.substring(10,index-1);
    if(index==-1){
        res=line;
    }
    return res;
}

rs1.on('data', function(chunk) {
  rs1.pause();
  
  var lines = (buffer+chunk).split(/\r?\n/g);
  
    for (var i = 0; i < lines.length && lines_num < max_read; ++i) {

        if (i == lines.length - 1) {
            buffer = lines[i];
        } else {
            
            if (lines_num < max_read) {
                ws.write(json_line_to_text(lines[i]) + "\n");
                lines_num++; 
            }
        }

    }  
      
    if(lines_num>=max_read){
      rs1.close();
      console.log("close");    
    } 
    
    rs1.resume(); 
    
});

rs1.on('close', function () {
    ws.close();       
});

说明:我加入了json_line_to_text函数,原本以为它是问题根源,实际并非如此。

内容的提问来源于stack exchange,提问作者user3776738

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:23:14