Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么从缓冲区获取的字符串不等于JavaScript字符串_Javascript_Python_Node.js - Fatal编程技术网

为什么从缓冲区获取的字符串不等于JavaScript字符串

为什么从缓冲区获取的字符串不等于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

我正在从事一个项目,在这个项目中,我将NodeJS和python结合使用。我的节点js代码是python代码的子进程。我将一些数据从NodeJS发送到python,同时也将一些数据从python接收回node

我这样调用python文件

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操作符对进行操作时,它会对这两个操作符都显示string

我想知道背后的原因是什么,如果我们想要比较它们,或者有更好的方法将数据从python返回到节点,那么解决方案是什么。我知道这个“mydata”字符串来自缓冲区,python将它放入缓冲区,node从缓冲区读取它,我认为它们都是不同的,因为一个是python字符串,另一个是nodejs字符串,可能是因为在引擎盖下,这两个字符串的处理或生成方式不同


但是,如果有人知道,请分享您的知识。这是因为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,我已经检查过它是否有效。谢谢。成功了。