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

如何直接将subprocess命令输出转为有效JSON字典而非读取文件?

解决方法

你的问题核心是搞反了JSON的序列化和反序列化操作:

  • 你现在通过subprocess捕获到的内容是命令输出的原始JSON字符串,直接调用json.dumps()是把这个字符串再转成JSON格式的字符串,自然会出现大量转义字符(因为要把字符串里的引号、换行符等转义)。
  • 正确的做法和读取文件时一致,用json.loads()把这个JSON字符串反序列化成字典。

正确代码示例

用subprocess.check_output的写法

import subprocess
import json

# 捕获命令输出并解码为字符串
output_str = subprocess.check_output(["cmd", "-J"]).decode("utf-8")
# 把JSON字符串转成字典
data = json.loads(output_str)

用subprocess.run的更推荐写法(Python3.7+)

import subprocess
import json

# text=True 直接返回字符串,无需手动decode
result = subprocess.run(["cmd", "-J"], capture_output=True, text=True)
# 从标准输出中解析JSON为字典
data = json.loads(result.stdout)

额外注意事项

  • 如果命令输出的编码不是UTF-8,需要调整decode()的参数(比如decode("gbk")),或者在subprocess.run里用encoding="gbk"替代text=True。
  • 确保命令cmd -J确实输出了合法的JSON格式内容,没有额外的冗余输出(比如日志、错误信息混在标准输出里),否则json.loads会报错,这时可以检查result.stderr查看错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:16:09