''' Created on 2 nov 2019 @author: Emanuele Trabattoni ''' import json,os,glob,copy class bananaCONF(object): ''' Carica e Salva file di configurazione per bananaSPLITTER ''' def __init__(self, workdir=None, logger=None): self.log = logger self.fileList = None self.workdir = None self.inUse = None self.settingsList = dict() if workdir is not None: self.workdir = workdir os.chdir(workdir) self.log.debug("Cerco le configurazioni in: [{}]".format(os.getcwd())) else: self.log.error("Non mi e' stata fornita una directory per i file di configurazione") pass def open(self): self.log.info("Carico i file di configurazione") self.fileList = glob.glob(r"*.json") if len(self.fileList) > 0: for f in self.fileList: try: fp = open(f) tf = json.load(fp) fName = f.split("\\")[-1] self.settingsList[fName] = copy.deepcopy(tf) self.log.info("Caricato correttamente: {}".format(fName)) fp.close() except json.JSONDecodeError as e: self.log.error("Impossibile leggere la configurazione:{}\n \ Controlla il file a riga: {} e colonna:{}" .format(e.doc, e.lineno, e.colno)) except IOError as ee: self.log.error("Impossibile aprire il file: {}".format(ee)) except Exception as eee: self.log.critical("Eccezione inaspettata: {}".format(eee)) else: self.log.error("Non ho trovato alcun file di configurazione!") pass def reload(self): self.settingsList = None self.fileList = None self.inUse = None self.open() pass def use(self, toUse): self.inUse = toUse pass def save(self): self.log.info("Salvo la configurazione: {}".format(self.inUse)) try: os.chdir(self.workdir) f=open(self.inUse) json.dump(self.settingsList[self.inUse], f) f.close() except IOError as e: self.log.error("Impossibile salvare il file: {} - [{}]".format(self.inUse,e)) pass def getFiles(self): return self.fileList def getParam(self, k): return self.settingsList[self.inUse][k] pass def setParam(self, k, v): self.settingsList[self.inUse][k]=dict(v) pass