- edited description
Problem writing in file, ljust attribute
Issue #47
invalid
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)
-
reporter -
reporter Stupidy error, I was supposed to call writerow(), not writerows()...it's fixed
-
reporter - marked as trivial
-
repo owner - changed status to invalid
- Log in to comment
edit to better visualize the code.