gpt4 book ai didi

python - NodeJS stdout python 多次打印?

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:58 25 4
gpt4 key购买 nike

我有一个打印 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com