1

所以我有一堆 csv 文件,它们的数据比我需要的多,我想通过只保留 2015 年后日期的行来过滤数据。问题是它适用于单个文件但是当我输入多个文件它在所有流中写入相同的数据。所以有人能帮帮我吗...

这是我的代码:

const fastcsv = require('fast-csv');

const csv = require('csv-parser');
const fs = require('fs');

const dateList = new Date('2015-01-01')


let files = fs.readdirSync("dir");

for(let file of files){
    var list = []
    
    
    console.log('<inputPath>'+file);
    fs.createReadStream('<inputPath>'+file)
        .pipe(csv())
        .on('data', (row) => {

            //filtering data here
            var dateRow = new Date(row.Date);
            if(dateRow >= dateList)  list.push(row);

        })
        .on('end', () => {

            //my writestream, I dont know if I should make some function or do it here itself

            const ws = fs.createWriteStream('<outputPath>' + file)
                .then(()=>{
                    console.log(`CSV file successfully processed : ${file}`);
                    fastcsv
                        .write(list, { headers: true })
                        .pipe(ws);
                })

    });
}

我知道我应该使用一些 setTimeout 或一些回调函数,但我不知道具体在哪里

4

0 回答 0