首次提交
This commit is contained in:
73
tools/stats_jsonl.py
Normal file
73
tools/stats_jsonl.py
Normal file
@@ -0,0 +1,73 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
统计 数据.jsonl:成功条数、总条数、成功数据总秒数、全部数据总秒数。
|
||||
用法: python stats_jsonl.py [数据.jsonl路径]
|
||||
默认: python stats_jsonl.py 数据.jsonl
|
||||
"""
|
||||
import json
|
||||
import sys
|
||||
from collections import Counter
|
||||
|
||||
JSONL_PATH = sys.argv[1] if len(sys.argv) > 1 else "数据.jsonl"
|
||||
|
||||
|
||||
def fmt(seconds):
|
||||
"""秒 → H时M分S秒,便于阅读"""
|
||||
seconds = int(round(seconds))
|
||||
h, rem = divmod(seconds, 3600)
|
||||
m, s = divmod(rem, 60)
|
||||
return f"{h}时{m}分{s}秒"
|
||||
|
||||
|
||||
def main():
|
||||
total = 0
|
||||
success = 0
|
||||
total_sec = 0.0
|
||||
success_sec = 0.0
|
||||
status_counter = Counter()
|
||||
|
||||
try:
|
||||
f = open(JSONL_PATH, encoding="utf-8")
|
||||
except FileNotFoundError:
|
||||
print(f"找不到文件: {JSONL_PATH}")
|
||||
return
|
||||
|
||||
with f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
try:
|
||||
rec = json.loads(line)
|
||||
except json.JSONDecodeError:
|
||||
continue
|
||||
|
||||
total += 1
|
||||
status = rec.get("status")
|
||||
status_counter[status] += 1
|
||||
|
||||
dur = rec.get("duration") or 0
|
||||
try:
|
||||
dur = float(dur)
|
||||
except (TypeError, ValueError):
|
||||
dur = 0.0
|
||||
total_sec += dur
|
||||
|
||||
if status == "success":
|
||||
success += 1
|
||||
success_sec += dur
|
||||
|
||||
rate = (success / total * 100) if total else 0.0
|
||||
|
||||
print(f"文件: {JSONL_PATH}")
|
||||
print("-" * 40)
|
||||
print(f"总条数: {total}")
|
||||
print(f"成功条数: {success} ({rate:.1f}%)")
|
||||
print(f"各状态明细: {dict(status_counter)}")
|
||||
print("-" * 40)
|
||||
print(f"成功数据秒数: {success_sec:.2f} 秒 ({fmt(success_sec)})")
|
||||
print(f"全部数据秒数: {total_sec:.2f} 秒 ({fmt(total_sec)})")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user