python - NodeJS stdout python 多次打印?

标签 python node.js

我有一个打印 JSON 和字符串的 python 脚本:

# script.py
print('{"name": "bob", "height": 4, "weight": 145}')
print('hello')
sys.stdout.flush()

nodejs 应用程序通过 child-process 调用 python 脚本。但我的输出出现错误。如何在nodejs中处理python输出?

// nodejs
var process = spawn('python3', ["./script.py", toSend]);
    process.stdout.on('data', function(data) {
      message = JSON.parse(data)
      console.log(message)
})

我在运行此程序时收到SyntaxError: Unexpected token

最佳答案

在你的Python脚本中... 这一行

print('{"name": "bob", "height": 4, "weight": 145}')

应该改变

import json
print(json.dumps({"name": "bob", "height": 4, "weight": 145}))

这将处理并确保 JSON 格式正确,以便 Node 可以解析 JSON 字符串(但您当前的版本应该没问题)。然而在这种情况下,真正的问题如下......

您将以

结束脚本
print('hello')

这意味着 JSON.parse() 将尝试将 hello 解析为 JSON.parse() 的一部分,因为您正在从 stdout 读取... hello > 不是 JSON 格式。所以 JSON.parse() 将会失败。因此,也删除该行。

如果您有多个 json 对象要发送,如您在评论中所述

您可以将所有数据合并到一个 JSON 对象中 my_object = {"data": "info"....}json.dumps() 单个较大的对象..

obj1 = {}
obj2 = {}
myobjects = [obj1, obj2]
print(json.dumps(myobjects))

Node 端将收到可迭代的对象列表

关于python - NodeJS stdout python 多次打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689298/

相关文章:

python - 当组都在同一元素中时,使用 BeautifulSoup 将 HTML 分成组

python - PyQt线程通信帮助? QThread 和 QObject

python - 如何使用 python 增加 Mongodb 的连接池大小

node.js - 如何仅在 macOS 上运行 package.json 安装后脚本

javascript - 如何为应用程序只执行一次方法

node.js - yeoman 不在 Windows 中工作

python - 如何通过Python脚本退出正在运行的Windows程序?

python - 如何使用 PySide 加载图像联系表?

javascript - 无法读取未定义的属性 '__reactAutoBindPairs' - React.js

image - Node.js:不使用 ImageMagick 调整图像大小