37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""从 Tee 输出的 CLI 文本中提取末尾 JSON,落盘为 summary.json。
|
|
|
|
官方演练目录由 run 命令产生 cli-output.txt(前面可能有 CUDA 警告),
|
|
本脚本只提取最后一个完整 JSON 对象,并核对 adjacent 的官方 result.json。
|
|
"""
|
|
import argparse
|
|
import json
|
|
from pathlib import Path
|
|
|
|
|
|
def extract(text: str) -> dict:
|
|
start = text.rfind("\n{")
|
|
if start < 0:
|
|
raise ValueError("未找到 JSON 对象")
|
|
return json.loads(text[start + 1:])
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("folder", type=Path)
|
|
args = parser.parse_args()
|
|
folder = args.folder
|
|
summary = extract((folder / "cli-output.txt").read_text(encoding="utf-8"))
|
|
(folder / "summary.json").write_text(
|
|
json.dumps(summary, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
|
print(json.dumps({
|
|
"folder": str(folder), "completed": summary["completed"],
|
|
"virtual_time_s": summary["virtual_time_s"],
|
|
"cleared_channels": summary["cleared_channels"],
|
|
"total_requests": summary["total_requests"],
|
|
}, ensure_ascii=False))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|