我需要将大型csv文件从node发送到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
中,这就是获得Enametoolong
的原因。
您需要更改Python脚本以从stdin
接收数据,并使用pyshell.send(data);
let pyshell = new PythonShell('hello.py', { mode: 'text' });
// sends a message to the Python script via stdin
pyshell.send('hello');
您可以使用以下3种模式之一:
在您的特定情况下,可以使用json
并单独发送每一行。然后,在您的python脚本中,您可以使用以下摘自python-shell
示例的内容。
我不认识什么蟒蛇
import sys, json
# simple JSON echo script
for line in sys.stdin:
print(json.dumps(json.loads(line)))
let pyshell = new PythonShell('hello.py', { mode: 'json' });
fs.createReadStream('data.csv')
.pipe(csv())
.on('data', (row) => {
pyshell.send(row);
})
我将pdf文档存储在服务器端的文件系统中。 我需要让用户下载其中一个,当他/她点击下载。 问题是我知道如何将文件从NodeJS发送到浏览器,但这里的请求将由ReactJS axios请求发出。因此,当我发送文件时,响应将转到react。如何将该pdf文件发送给用户?我是否使用前端代码直接访问文件系统? 在NodeJS中执行之后,当我记录响应时,我在浏览器控制台中获得以下信息 我如何处理这个问题,以
问题内容: 我需要构建一个函数来处理大型CSV文件,以便在bluebird.map()调用中使用。考虑到文件的潜在大小,我想使用流媒体。 此函数应接受一个流(一个CSV文件)和一个函数(处理该流中的块),并在读取文件到末尾(已解决)或错误(已拒绝)时返回promise。 所以,我开始: 现在,我有两个相互关联的问题: 我需要限制正在处理的实际数据量,以免造成内存压力。 作为参数传递的函数通常将是异
我正在尝试将CSV发送到Firebase云存储中,但不是从用户从他们的文件资源管理器中手动选择文件。相反,点击一个按钮,就会用JavaScript创建一个CSV文件,这就是我想要上传到云存储的内容。 代码片段显示了我是如何创建文件的 乔治
我试图从Firefox中的新MediaRecorderAPI发送一个Blob到NodeJS以将其存储在文件中。Blob包含转换为webm-file的记录。我在发送之前将这个Blob分成一定的大小,以便能够通过webrtc数据通道提供的带宽发送它。这个看起来像这样: 在nodeJS方面,我试图将数据转换回webm文件,就像这样: 它告诉我,块被写入,但是文件是空的。我尝试了从blob派生的bas64
我尝试创建一个redux-react应用程序,在该应用程序中,用户可以导入一个CSV文件,然后将其存储在数据库中。现在,我在前端工作,我想在那里创建一个代码,用户可以选择一个csv文件,从他们的计算机,他们想下载,然后文件发送到后端。我已经使用csvReader读取CSV文件,但我不知道如何将数据发送到后端。我在后端使用nestJS。我想一次发送整个CSV文件,但我不知道如何解决这个问题。我是初学
我正在尝试使用Vertx上传一个文件,该请求是一个包含PDF的POST请求,我的处理程序如下所示(我从github中的一个示例中获取了代码): 根据上面的评论,我不能只尝试这样的事情(它实际上显示了一个错误): 我一直在检查MessageCodec,但我不清楚如何将其应用于这种情况。 注意:此escenario必须使用eventbus。