You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python执行Node.js脚本并获取其返回输出?

Python调用Node.js脚本后处理返回输出方案

嘿,咱们来解决你用Python执行Node.js脚本后处理返回输出的问题。现在你拿到的是字节串(比如b'{"1":[]...}'),得把它转成Python能直接用的数据结构才行,具体步骤如下:

你的现有代码

Node.js脚本(b.js)

const data = { 
  "1":[], "2":[], "3":[], "4":[], "5":[], 
  "6":[], "7":[], "8":[], "9":[], "10":[], 
  "11":[{"id":"1","domain":"www.xxxxx.com","keywords":"白银交易平台","type":"Type1","time":["11","14","15","18"]}] 
};
console.log(JSON.stringify(data));

(注:给原脚本补上了const声明,符合Node.js的语法规范)

Python脚本片段(a.py)

if response.exitcode == 0:
    print(response.stdout)
else:
    sys.stderr.write(response.stderr)

优化后的解决方案

现在response.stdout是字节类型,你需要先解码成字符串,再用json.loads()转换成Python字典,这样就能正常操作数据了。修改后的Python代码如下:

import json
import sys

# 假设response是subprocess.run()的返回结果
if response.exitcode == 0:
    # 1. 把字节串解码为UTF-8字符串,同时去除首尾的换行/空格
    output_str = response.stdout.decode('utf-8').strip()
    # 2. 将字符串解析为Python字典
    data_dict = json.loads(output_str)
    # 示例:打印11对应的数组内容
    print("解析后的11字段内容:", data_dict["11"])
else:
    # 错误输出同样需要解码成字符串
    sys.stderr.write(response.stderr.decode('utf-8'))

关键细节说明

  • 解码字节串:subprocess模块返回的stdout/stderr默认是bytes类型,必须转成字符串才能被JSON解析器处理,一般用utf-8编码即可,如果你的脚本有特殊编码可以调整。
  • 去除冗余字符:.strip()能去掉输出前后的换行符、空格,避免因为这些额外字符导致JSON解析失败。
  • 错误处理(可选):如果担心JSON解析出错,可以加个try-except块捕获json.JSONDecodeError,比如:
    try:
        data_dict = json.loads(output_str)
    except json.JSONDecodeError as e:
        print(f"JSON解析失败: {e}")
    

内容的提问来源于stack exchange,提问作者Ekoar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:16:32