首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS标准输出python多个打印?

NodeJS标准输出python多个打印?
EN

Stack Overflow用户
提问于 2017-06-22 10:45:44
回答 1查看 967关注 0票数 4

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

代码语言:javascript
复制
# script.py
print('{"name": "bob", "height": 4, "weight": 145}')
print('hello')
sys.stdout.flush()

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

代码语言:javascript
复制
// nodejs
var process = spawn('python3', ["./script.py", toSend]);
    process.stdout.on('data', function(data) {
      message = JSON.parse(data)
      console.log(message)
})

我从运行这个程序中得到了一个SyntaxError: Unexpected token

EN

回答 1

Stack Overflow用户

发布于 2017-06-22 11:13:21

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

代码语言:javascript
复制
print('{"name": "bob", "height": 4, "weight": 145}')

应该改变

代码语言:javascript
复制
import json
print(json.dumps({"name": "bob", "height": 4, "weight": 145}))

这将处理并确保JSON被正确格式化,这样JSON字符串就可以按节点进行解析(但您当前的版本应该没问题)。然而,在这种情况下,真正的问题是接下来的。

您的脚本将以

代码语言:javascript
复制
print('hello')

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

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

您可以将所有数据合并到单个JSON对象my_object = {"data": "info"....}中,然后对单个较大的对象执行json.dumps()操作。

代码语言:javascript
复制
obj1 = {}
obj2 = {}
myobjects = [obj1, obj2]
print(json.dumps(myobjects))

而Node端将接收到一个可以迭代的对象列表

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44689298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档