web-dev-qa-db-ja.com

Papa Parseでローカルファイルを読み取るにはどうすればよいですか?

Papa Parseでローカルファイルを読み取るにはどうすればよいですか?ローカルにchallanges.csvというファイルがありますが、何度も試した後、Papa Parseで解析できません。

var data;

Papa.parse('challanges.csv', {
  header: true,
  dynamicTyping: true,
  complete: function(results) {
    console.log(results);
    data = results.data;
  }
});

私の知る限り、csvファイルをFileとして開くときに問題が発生します。 javascriptでどうすればいいですか?

7
adamb

Papaparseのドキュメントで提案されているFile AP​​Iは、使用するブラウザ向けです。サーバー側のノードでこれを実行していると仮定すると、私のために働くのは 読み取り可能なストリーム を活用することです:

const fs = require('fs');
const papa = require('papaparse');
const file = fs.createReadStream('challenge.csv');
var count = 0; // cache the running count
papa.parse(file, {
    worker: true, // Don't bog down the main thread if its a big file
    step: function(result) {
        // do stuff with result
    },
    complete: function(results, file) {
        console.log('parsing complete read', count, 'records.'); 
    }
});

簡単なインターフェイスがあるかもしれませんが、これまでのところ非常にうまく機能し、大きなファイルを処理するためのストリーミングのオプションを提供しています。

10
Philip M.

これは、最良の答えがミュラ・シーカーのものであることを繰り返し述べます。

必要なのは、構成に追加することですdownload: trueおよびローカルパスはPapa Parseによってダウンロードされます。 Philip M.によるストリーミング回答は、ベストアンサーではありません。

var data;

Papa.parse('challanges.csv', {
  header: true,
  download: true,
  dynamicTyping: true,
  complete: function(results) {
    console.log(results);
    data = results.data;
  }
});

追伸Murat Sekerの答えについてコメントするほどの評判はありません。そこで、答えを再投稿しました。評判に対するどんな愛でも感謝されます。 :-)

0
David Bernat

設定にもう1行追加する必要があります:download: true,

var data;

Papa.parse('../challanges.csv', {
  header: true,
  download: true,
  dynamicTyping: true,
  complete: function(results) {
    console.log(results);
    data = results.data;
  }
});

更新:この回答では、ファイルオブジェクトは必要ありません。ファイル名を渡すことができ、papa parseはそれを「ダウンロード」します。

0
Murat Seker