X-Git-Url: http://www.iramuteq.org/git?a=blobdiff_plain;f=tableau.py;h=204df9ce69520c3895a5cd8d93e17e42278808ed;hb=refs%2Fheads%2F3.0;hp=032b3953351ba2b1723e64f727cc20f363a6d654;hpb=efbde1a5121320cbd1966531ac9b5d23df4c9e90;p=iramuteq diff --git a/tableau.py b/tableau.py index 032b395..204df9c 100644 --- a/tableau.py +++ b/tableau.py @@ -22,7 +22,8 @@ import os from copy import copy import re import html.entities -import shelve +#import shelve +import json from uuid import uuid4 import logging @@ -95,7 +96,7 @@ class Tableau() : self.parametres['type'] = 'matrix' self.parametres['matrix_name'] = os.path.basename(filename) self.parametres['uuid'] = str(uuid4()) - self.parametres['shelves'] = os.path.join(self.parametres['pathout'], 'shelve.db') + self.parametres['shelves'] = os.path.join(self.parametres['pathout'], 'shelve') self.parametres['ira'] = os.path.join(self.parametres['pathout'], 'Matrix.ira') else : self.parametres = parametres @@ -118,10 +119,8 @@ class Tableau() : #self.parametres = self.parametre def read_tableau(self, fileout) : - d=shelve.open(fileout) - #self.parametres = d['parametres'] - #if 'syscoding' not in self.parametres : - # self.parametres['syscoding'] = sys.getdefaultencoding() + with open(fileout, 'r', encoding='utf8') as f : + d = json.load(f) self.actives = d['actives'] self.sups = d['sups'] self.classes = d['classes'] @@ -136,7 +135,6 @@ class Tableau() : self.lchi = d['lchi'] if 'content' in d : self.content = d['content'] - d.close() def open(self): print('open matrix') @@ -146,7 +144,7 @@ class Tableau() : self.colnb = len(self.linecontent[0]) def save_tableau(self, fileout) : - d=shelve.open(fileout) + d = {} d['parametres'] = self.parametres d['actives'] = self.actives d['sups'] = self.sups @@ -161,7 +159,8 @@ class Tableau() : if 'lchi' in dir(self) : d['lchi'] = self.lchi d['content'] = self.content - d.close() + with open(fileout, 'w', encoding='utf8') as f : + json.dump(d, f) def make_content(self) : self.pathout.createdir(self.parametres['pathout']) @@ -173,7 +172,6 @@ class Tableau() : self.read_ods() self.parametres['csvfile'] = os.path.join(self.parametres['pathout'], 'csvfile.csv') self.make_tmpfile() - print(self.parametres) DoConf().makeoptions(['matrix'],[self.parametres], self.parametres['ira']) self.parent.history.addMatrix(self.parametres) @@ -181,7 +179,7 @@ class Tableau() : self.parametres['csvfile'] = os.path.join(self.parametres['pathout'], 'csvfile.csv') self.make_tmpfile() DoConf().makeoptions(['matrix'],[self.parametres], self.parametres['ira']) - self.parent.history.addMatrix(self.parametres) + self.parent.history.addMatrix(self.parametres) def read_xls(self) : #FIXME : encodage @@ -207,12 +205,12 @@ class Tableau() : def read_csv(self) : with codecs.open(self.parametres['originalpath'], 'r', self.parametres['encodage']) as f : - content = f.read() + content = f.read() self.linecontent = [line.split(self.parametres['colsep']) for line in content.splitlines()] self.linecontent = [[val.replace('"','').replace(';',' ').replace('\t', ' ').strip() for val in line] for line in self.linecontent] def write_csvfile(self) : - with open(self.parametres['csvfile'], 'w') as f : + with open(self.parametres['csvfile'], 'w', encoding='utf8') as f : f.write('\n'.join(['\t'.join(line) for line in self.csvtable])) def make_tmpfile(self) : @@ -234,11 +232,11 @@ class Tableau() : else : self.rownames = [repr(i) for i in range(self.rownb)] self.idname = 'identifiant' - self.csvtable = [[self.idname] + self.colnames] + [[self.rownames[i]] + self.linecontent[i] for i in range(len(self.rownames))] + self.csvtable = [[self.idname] + self.colnames] + [[self.rownames[i]] + self.linecontent[i] for i in range(len(self.rownames))] self.write_csvfile() def read_csvfile(self): - with codecs.open(self.parametres['csvfile'], 'r', self.parametres['syscoding']) as f: + with open(self.parametres['csvfile'], 'r', encoding='utf8') as f: self.csvtable = [line.split('\t') for line in f.read().splitlines()] self.linecontent = [line[1:] for line in self.csvtable] self.linecontent.pop(0) @@ -287,10 +285,9 @@ class Tableau() : def getactlistfromselection(self, listact) : selcol = self.select_col(listact) self.actives = self.make_dico(selcol) - return [[val, self.actives[val][0]] for val in self.actives] + return [[val, self.actives[val][0]] for val in self.actives] def make_listactives(self) : - print(self.actives, self.parametres['mineff']) self.listactives = [val for val in self.actives if val != 'NA' and self.actives[val][0] >= self.parametres['mineff']] def write01(self, fileout, dico, linecontent) : @@ -300,10 +297,10 @@ class Tableau() : for i, forme in enumerate(self.listactives) : for line in dico[forme][1] : out[line][i] = '1' - #out = [[self.rownames[i]] + out[i] for i in range(len(linecontent))] + #out = [[self.rownames[i]] + out[i] for i in range(len(linecontent))] #out.insert(0,[self.idname] + self.listactives) out.insert(0, self.listactives) - with open(fileout, 'w') as f : + with open(fileout, 'w', encoding='utf8') as f : f.write('\n'.join([';'.join(line) for line in out])) def make_01_from_selection(self, listact, listsup = None, dowrite = True) : @@ -321,7 +318,7 @@ class Tableau() : if forme[0] == '*': UpdateDico(self.sups, forme, i) else: - UpdateDico(self.actives, forme, i) + UpdateDico(self.actives, forme, i) self.listactives = [val for val in self.actives if self.actives[val][0] >= self.parametres['mineff']] table = [['0' for i in range(len(self.listactives))] for j in range(self.rownb)] for i, val in enumerate(self.listactives) : @@ -331,15 +328,15 @@ class Tableau() : #table = [[self.rownames[i]] + table[i] for i in range(len(self.rownames))] #table.insert(0, [self.idname] + self.listactives) table.insert(0, self.listactives) - with open(fileout, 'w') as f: + with open(fileout, 'w', encoding='utf8') as f: f.write('\n'.join([';'.join(line) for line in table])) def printtable(self, filename, Table, sep = ';'): - with open(filename, 'w') as f : + with open(filename, 'w', encoding='utf8') as f : f.write('\n'.join([sep.join(line) for line in Table])) def buildprofil(self) : - with open(self.pathout['uce'], 'r') as filein : + with open(self.pathout['uce'], 'r', encoding='utf8') as filein : content = filein.readlines() content.pop(0) lsucecl = [] @@ -378,9 +375,9 @@ class Tableau() : if sup in self.linecontent[uce]: line[i + 1] += 1 tablecontet.append([line[0]] + [repr(don) for don in line if type(don) == type(1)]) - + self.printtable(self.pathout['ContEtOut'], tablecontet) - self.printtable(self.pathout['Contout'], tablecont) + self.printtable(self.pathout['Contout'], tablecont) def get_colnames(self) : return self.colnames[:]