将大型csv文件从NodeJS发送到python

将大型csv文件从NodeJS发送到python,python,node.js,Python,Node.js,我需要将大型csv文件从节点发送到python。此代码适用于小文件,但不适用于大文件。我也尝试过繁殖过程。我不明白是什么问题。如果有人知道正确的代码,请分享 代码: const express=require('express') const app=express() let p = require('python-shell'); const fs = require('fs'); let filledarray=[] fs.createReadStream('data.csv')

我需要将大型csv文件从节点发送到python。此代码适用于小文件,但不适用于大文件。我也尝试过繁殖过程。我不明白是什么问题。如果有人知道正确的代码,请分享

代码:

const express=require('express')
const app=express()    
let p = require('python-shell');
const fs = require('fs');
let filledarray=[]

fs.createReadStream('data.csv')

.pipe(csv())

.on('data', (row) => {



filledarray.push(row)

})

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

   console.log('CSV file successfully processed');

});

app.get('/send',(req,res)=>{



  var options = {
       args:
       [
           JSON.stringify(filledarray)
       ]
  }
  p.PythonShell.run('hello.py', options, function  (err, results)  {

         if(err) {
           console.error(err)
         }
         else{
            console.log(results)
            res.send(results)
         }

  });

})

app.listen('5000')
错误

 Error: spawn ENAMETOOLONG at ChildProcess.spawn (internal/child_process.js:394:11) at Object.spawn 
 (child_process.js:535:9)

您将大量数据作为参数发送到脚本
hello.py
,这就是为什么您会得到
enametoolog

您需要更改Python脚本以从
stdin
接收数据,并使用
pyshell.send(数据)

您可以使用以下三种模式之一:

  • 使用文本模式交换文本行
  • 使用json模式交换json片段
  • 对任何其他内容使用二进制模式(数据按原样发送和接收)
在您的特定情况下,您可以使用
json
并分别发送每一行。然后,在python脚本中,可以使用以下内容,这些内容取自
pythonshell

我不认识蟒蛇

let pyshell=newpythonshell('hello.py',{mode:'json'});
fs.createReadStream('data.csv')
.pipe(csv())
.on('数据',(行)=>{
pyshell.send(行);
})
let pyshell = new PythonShell('hello.py', { mode: 'text' });

// sends a message to the Python script via stdin
pyshell.send('hello');
import sys, json

# simple JSON echo script
for line in sys.stdin:
  print(json.dumps(json.loads(line)))