为什么从缓冲区获取的字符串不等于JavaScript字符串
我正在从事一个项目,在这个项目中,我将NodeJS和python结合使用。我的节点js代码是python代码的子进程。我将一些数据从NodeJS发送到python,同时也将一些数据从python接收回node 我这样调用python文件为什么从缓冲区获取的字符串不等于JavaScript字符串,javascript,python,node.js,Javascript,Python,Node.js,我正在从事一个项目,在这个项目中,我将NodeJS和python结合使用。我的节点js代码是python代码的子进程。我将一些数据从NodeJS发送到python,同时也将一些数据从python接收回node 我这样调用python文件 const py = spawn('python', ['file.py', 'some_data']); print("mydata") 为了将数据从python发送回节点,我在python中使用print,如下所示 const py
const py = spawn('python', ['file.py', 'some_data']);
print("mydata")
为了将数据从python发送回节点,我在python中使用print,如下所示
const py = spawn('python', ['file.py', 'some_data']);
print("mydata")
对于nodejs中的接收,我使用这段代码
py.stdout.on('data', async (data) => {
//This data is python string as we can see above
var data_from_python = data.toString();
});
现在我面临的问题是,来自python的字符串不等于我尝试过的节点js字符串
data_from_python === "mydata" // false
还有这个
data_from_python == "mydata" // false
两者都返回false
但是,当我使用typeof操作符对和但是,如果有人知道,请分享您的知识。这是因为python中的print在数据后添加了一行新行,因此您将收到
mydata\r\n
,而不是mydata
。因此,您应该在您的情况下检查相同的情况,请参见以下内容:
const { spawn } = require('child_process')
const py = spawn('python', ['py.py', 'some_data']);
py.stdout.on('data', async (data) => {
console.log(data);
var data_from_python = data.toString();
console.log(data_from_python == "mydata\r\n"); // outputs true
});
请尝试从python中记录控制台日志
数据,\u并查看它是什么。我已经在控制台中尝试了完全相同的mydataYes,我已经检查过它是否有效。谢谢。成功了。