【问题标题】:How to keep on writing on the same csv file?如何继续写同一个csv文件?
【发布时间】:2017-03-17 09:23:37
【问题描述】:

我用这个nodejs package为了每分钟将一些数据写入一个CSV文件,到目前为止文件的创建是好的,第一次写也是好的,但是到了写的时候再次在同一个文件上,nodejs 给我带来了错误,我试图四处寻找解决方案,但我什么也没找到,希望有人能帮助我。我会发布我现在拥有的东西

var cronCSV = require('node-schedule');
var csvWriter = require('csv-write-stream');
var writer = csvWriter({sendHeaders: false});
var ruleCSV = new cron.RecurrenceRule();
ruleCSV.second = 1;
const fs = require('fs');
writer.pipe(fs.createWriteStream('out.csv'))
//SOME OTHER CODE

    cronCSV.scheduleJob(ruleCSV, function(){

        writer.write({hPerc: hPerc, humidity: humidity});
        writer.end();
        console.log("Scritto su CSV");
    });

还有错误:

_stream_readable.js:501
  dest.on('unpipe', onunpipe);
      ^

TypeError: Cannot read property 'on' of undefined
    at CsvWriteStream.Readable.pipe (_stream_readable.js:501:7)
    at Job.job (/home/pi/node_led/main.js:64:10)
    at Job.invoke (/home/pi/node_led/node_modules/node-schedule/lib/schedule.js:175:10)
    at Timeout._onTimeout (/home/pi/node_led/node_modules/node-schedule/lib/schedule.js:479:11)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)

【问题讨论】:

  • "throws me error" — 错误信息到底说了什么?
  • @Quentin 现在编辑了问题以包含错误;)

标签: javascript node.js csv npm cron


【解决方案1】:

您在第一次(以及每次)写入管道后关闭管道:

您应该删除此行:

writer.end();

如果该过程打算在任何时候完成,那么最好在此之前执行它。但是,当您希望对其进行更多次写入时,则不会。

【讨论】:

  • 对..我提出了这么愚蠢的问题..这就是为什么我找不到答案,非常感谢
  • 我还注意到“writer.pipe(fs.createWriteStream('out.csv'))”每次我停止并运行应用程序时都会删除 csv 文件的内容..有没有办法防止它?
  • 您可以以追加模式打开文件,而不是写入。我不确定如何处理流,但肯定有办法解决它。我看到的问题是 csvWriter 还将再次插入标题(将被视为文件中的数据行)。顺便说一句, csvWriter 可能会有一些选择来避免它。如果存在,你可以检查文件是否存在来决定是否必须生成头文件。
  • 另一方面,如果您没有任何复杂的数据字段(涉及有问题的字符,例如引号或换行符等),您可以简单地手动生成 csv 标题和数据行,即太容易了,就像我说的那样,你知道你永远不会有这样有问题的达达......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多