#!/usr/bin/python3 """ exportation de données iSpindel JSON vers données CSV """ import json, pathlib, csv class Frame(object): """""" def __init__(self,fname): """""" with open(fname,'r') as f: self._json = json.load(f) self.names = tuple(self._names()) self.keys = tuple(self._keys()) self.rows = tuple(self._rows()) def _names(self): """""" for group in self._json: yield group["name"] def _keys(self): """""" for i in self._json[0]["data"]: yield i["x"] def _rows(self): """""" def row(key): """""" for name in self.names: yield self.get(name,key) for k in self.keys: yield tuple(row(k)) def get(self,name,key): """""" for group in self._json: if group["name"] == name: for value in group["data"]: if value.get("x") == key: return value.get("y") if __name__ == "__main__": here = pathlib.Path.cwd() docs = tuple(here.rglob("2.json")) if len(docs) == 0: print("Aucun fichier JSON ('.json') trouvé.") for doc in docs: frame = None if doc.exists() and doc.stat().st_size > 0: frame = Frame(doc) with open(doc.with_suffix(".csv"),'w', newline='') as f: writer = csv.writer(f,dialect='unix') writer.writerow(frame.names) writer.writerows(frame.rows)