如何用Python将终端展示的规整JSON原样写入JSON文件
脚本修改实现方案
本次修改完全保留原有逐行解析非标准JSON源文件的逻辑,核心调整是替换原有直接终端打印的逻辑,将和终端pprint显示效果1:1一致的格式化内容写入本地文件,无格式偏差。
核心改动点
- 利用
pprint内置的流输出参数,将原本输出到终端的内容重定向到内存字符串缓冲区,不直接打印到stdout - 保持原有
pprint的默认参数(80列行宽、缩进规则、换行逻辑),和终端窗口显示效果完全匹配 - 增加简单的空行兼容判断,避免源文件末尾空行触发JSON解析报错
注意:不要直接用
json.dumps替代pprint的输出,因为两者的缩进规则、长文本换行逻辑、默认引号处理存在细微差异,无法做到和终端显示100%匹配。
完整可运行代码
import json import pprint from io import StringIO data = [] # 逐行读取源文件 with open("latency.json", "r", encoding="utf-8") as fp: while True: line = fp.readline() if not line: break # 跳过空行,避免解析报错 line = line.strip() if not line: continue parsed_obj = json.loads(line) data.append(parsed_obj) # 捕获pprint的终端输出内容,保持和原打印参数完全一致 buffer = StringIO() pprint.pprint( data, stream=buffer, width=80 # 和Linux终端默认80列行宽匹配,完全还原终端显示效果 ) formatted_result = buffer.getvalue() # 写入本地目标文件 with open("formatted_latency.json", "w", encoding="utf-8") as out_f: out_f.write(formatted_result)
效果说明
生成的formatted_latency.json文件内容,和你在Linux终端通过pprint(data)看到的文本完全一致,包括缩进规则、换行位置、数值显示格式,没有任何样式差异。
内容的提问来源于stack exchange,提问作者python3 aswin.py
相关产品推荐
相关产品推荐

