import sys,os,glob,collections sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) import prt,psb files=sorted(glob.glob(sys.argv[1])) tot=collections.Counter(); errs=collections.Counter(); bygen=collections.defaultdict(collections.Counter) samples={} for f in files: try: d,secs,order=prt.load(f) except Exception as e: print('LOADERR',f,e); continue gen=d[:60].split()[2].decode() for n in order: o,l,fl=secs[n] typ=fl[2] if typ!='9': bygen[gen]['type_'+typ]+=1; continue b=d[o:o+l] p,root,e=psb.parse(b) full = p.p==len(b) if e is None and full: bygen[gen]['ok']+=1; bygen[gen]['okbytes']+=l else: bygen[gen]['err']+=1; bygen[gen]['errbytes']+=l key=(n.split('#')[0], str(e).split('@')[0][:50]) errs[key]+=1; samples.setdefault(key,(os.path.basename(f),str(e))) for g,c in sorted(bygen.items()): print(g,dict(c)) for k,v in errs.most_common(40): print(v,k,samples[k])