File size: 652 Bytes
ca2f8ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import json, csv, time
from pathlib import Path

class MetricsLogger:
    def __init__(self, path):
        self.path=Path(path); self.path.parent.mkdir(parents=True,exist_ok=True)
    def log(self, **kw):
        kw.setdefault('time', time.time())
        with self.path.open('a') as f: f.write(json.dumps(kw)+'\n')

def jsonl_to_csv(jsonl_path, csv_path):
    rows=[json.loads(l) for l in Path(jsonl_path).read_text().splitlines() if l.strip()]
    if not rows: return
    keys=sorted(set().union(*(r.keys() for r in rows)))
    with open(csv_path,'w',newline='') as f:
        w=csv.DictWriter(f,fieldnames=keys); w.writeheader(); w.writerows(rows)