コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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)}")
コード例 #4
0
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