Problem writing in file, ljust attribute

Issue #47 invalid
alvarosps created an issue

Hello, I'm trying to write a matrix into a file, first a used Python 2.7 and gave up, because of the lack of difference in strings and bytes on this version, upgraded to Python 3 and now I'm having a problem.. here's my code:

#exemples:
#matrizes = [ [1,0,1,1...], [1,1,0,..],...]
#listas = ["12381238", "1283182", ...]

def exporta_sav(matrizes, listas):
    #matrizes = [matriz_grupo, matriz_n8]
    #listas = [cpcs_grupo, patentes_grupo, cpcs_n8, patentes_n8]
    savFile1 = "matrizgrupo.sav"
    savFile2 = "matrizsubgrupo.sav"

    varTypesGrupo = {}
    varTypesNivel8 = {}

    stringpatente = 'PATENTE'

    #Cria lista auxiliar para fazer a matriz corretamente no formato .sav
    varTypesGrupo[stringpatente] = sys.getsizeof(stringpatente)
    varTypesNivel8[stringpatente] = sys.getsizeof(stringpatente)
    for i in range(len(listas[0])):
        varTypesGrupo[listas[0][i]] = 0
    for i in range(len(listas[2])):
        varTypesNivel8[listas[2][i]] = 0

    cpcsGrupoAux = [stringpatente]
    for i in range(len(listas[0])):
        cpcsGrupoAux.append(listas[0][i])
    cpcsN8Aux = [stringpatente]
    for i in range(len(listas[2])):
        cpcsN8Aux.append(listas[2][i])

    #Com as colunas definidas, vai criar listas auxiliares para cada linha 
    matrizGrupoAux = []
    matrizN8Aux = []
    if len(matrizes[0]) == len(listas[1]):
        for i in range(len(matrizes[0])):
            matrizGrupoAux.append([ listas[1][i] ])
            for j in range(len(matrizes[0][i])):
                matrizGrupoAux[i].append(matrizes[0][i][j])
        if len(matrizes[1]) == len(listas[3]):
            for i in range(len(matrizes[1])):
                matrizN8Aux.append([ listas[3][i] ])
                for j in range(len(matrizes[1][i])):
                    matrizN8Aux[i].append(matrizes[1][i][j])

            del listas
            del matrizes

            for i in range(len(matrizGrupoAux)):
                matrizGrupoAux[i][0] = bytes(matrizGrupoAux[i][0], "utf8")
            for i in range(len(matrizN8Aux)):
                matrizN8Aux[i][0] = bytes(matrizN8Aux[i][0], "utf8")

            #Escrever nos arquivos

            with SavWriter(savFile1, cpcsGrupoAux, varTypesGrupo, ioUtf8=True) as writer:
                for patente in matrizGrupoAux:
                    writer.writerows(patente)
            with SavWriter(savFile2, cpcsN8Aux, varTypesNivel8, ioUtf8=True) as writer:
                for patente in matrizN8Aux:
                    writer.writerows(patente)

I'm getting an traceback, this:

Traceback (most recent call last):
    File "matrizbinaria.py", line 242, in (module)
        exporta_sav(resultados[0], resultados[1])
    File "matrizbinary.py", line229, in exporta_sav
        writer_writerows(patente)
    File "C:\Python34\lib\site-packages\savReaderWriter\savWriter.py", line 425, in writerows
        self.writerow(list(record))     #need item assignment
    File "C:\Python34\lib\site-packages\savReaderWriter\savWriter.py", line 387, in writerow
        self._pyWriterow(record)
    File "C:\Python34\lib\site-packages\savReaderWriter\savWriter.py", line 376, in _pyWriterow
        value = pad_string(value, varType)
    File "C:\Python34\lib\site-packages\savReaderWriter\savWriter.py", line 354, in _padStringValue
        return value.ljust(self.pad_8_lookup[varType])
AttributeError: 'int' object has no attribute 'ljust'

how can I solve it? thanks.

Comments (4)

  1. Log in to comment