def readCsv(arquivo, separadorCampos=';'): lista_dados = [] dados_linha = [] try: with open(arquivo, 'rt') as csvfile: csvreader = csv.reader(csvfile, delimiter=separadorCampos) for row in csvreader: existe_valor_linha = "" for campo in row: valor_celula = funcoesUteis.treatTextField(campo) existe_valor_linha += valor_celula # se não existir nenhum valor na linha passa pra próxima if existe_valor_linha == "": continue for campo in row: valor_celula = funcoesUteis.treatTextField(campo) # adiciona o valor da célula na lista de dados_linha dados_linha.append(valor_celula) # copia os dados da linha para o vetor de lista_dados lista_dados.append(dados_linha[:]) # limpa os dados da linha para ler a próxima dados_linha.clear() except Exception as e: print(e) pass # retorna uma lista dos dados return lista_dados
def leTxt(caminho, encoding='utf-8', treatAsText=False, removeBlankLines=False): lista_linha = [] # le o arquivo e grava num vetor try: with open(caminho, 'rt', encoding=encoding) as txtfile: for linha in txtfile: linha = str(linha).replace("\n", "") if treatAsText is True: linha = funcoesUteis.treatTextField(linha) if removeBlankLines is True: if linha.strip() == "": continue lista_linha.append(linha) except Exception as e: lista_linha.clear() with open(caminho, 'rt', encoding='Windows-1252') as txtfile: for linha in txtfile: linha = str(linha).replace("\n", "") if treatAsText is True: linha = funcoesUteis.treatTextField(linha) if removeBlankLines is True: if linha.strip() == "": continue lista_linha.append(linha) return lista_linha
def PDFToText(file, wayToSaveFile, mode="simple"): nameFile = funcoesUteis.getOnlyNameFile(os.path.basename(file)) wayToSave = f"{wayToSaveFile}/{nameFile}.txt" try: textPdf = "" with open(file, 'rb') as filePdf: documents = slate.PDF(filePdf) for document in documents: textPdf += document if funcoesUteis.treatTextField(textPdf) == "": PDFImgToText(file, wayToSaveFile) else: command = f'{fileDir}/exe/pdftotext64.exe -{mode} "{file}" "{wayToSave}"' os.system(command) except Exception as ex: print(f"Nao foi possivel transformar o arquivo \"{file}\". O erro é: {str(ex)}")
def leXls_Xlsx(arquivo, nameSheetToFilter='filterAll'): lista_dados = [] dados_linha = [] if os.path.getsize(arquivo) > 0: try: arquivo = xlrd.open_workbook(arquivo, logfile=open(os.devnull, 'w')) except Exception: try: arquivo = xlrd.open_workbook(arquivo, logfile=open(os.devnull, 'w'), encoding_override='Windows-1252') except Exception: return [] # guarda todas as planilhas que tem dentro do arquivo excel planilhas = arquivo.sheet_names() # lê cada planilha for sheetName in planilhas: # pega os dados da planilha planilha = arquivo.sheet_by_name(sheetName) # continue only if name sheet equal the name filter of argument if funcoesUteis.treatTextField( sheetName) == funcoesUteis.treatTextField( nameSheetToFilter) or nameSheetToFilter == 'filterAll': # pega a quantidade de linha que a planilha tem max_row = planilha.nrows # pega a quantidade de colunca que a planilha tem max_column = planilha.ncols # lê cada linha e coluna da planilha e imprime for i in range(0, max_row): valor_linha = planilha.row_values(rowx=i) # ignora linhas em branco if valor_linha.count("") == max_column: continue # lê as colunas for j in range(0, max_column): # as linhas abaixo analisa o tipo de dado que está na planilha e retorna no formato correto, sem ".0" para números ou a data no formato numérico tipo_valor = planilha.cell_type(rowx=i, colx=j) valor_celula = funcoesUteis.removerAcentosECaracteresEspeciais( str(planilha.cell_value(rowx=i, colx=j))) if tipo_valor == 2: valor_casas_decimais = valor_celula.split('.') valor_casas_decimais = funcoesUteis.treatNumberFieldInVector( valor_casas_decimais, 2, isInt=True) try: if valor_casas_decimais == 0: valor_celula = valor_celula.split('.') valor_celula = valor_celula[0] except Exception: valor_celula = valor_celula elif tipo_valor == 3: valor_celula = float( planilha.cell_value(rowx=i, colx=j)) valor_celula = xlrd.xldate.xldate_as_datetime( valor_celula, datemode=0) valor_celula = valor_celula.strftime("%d/%m/%Y") # retira espaços e quebra de linha da célula valor_celula = str(valor_celula).strip().replace( '\n', '') # adiciona o valor da célula na lista de dados_linha dados_linha.append(valor_celula) # copia os dados da linha para o vetor de lista_dados lista_dados.append(dados_linha[:]) # limpa os dados da linha para ler a próxima dados_linha.clear() else: continue # retorna uma lista dos dados return lista_dados