Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 13891

why it doesn't read all the files defined on glob.glob, but only one?

$
0
0

I'm trying to make a code that reads a fwf txt file and convert it to a csv file. So I have a list of txt files and I want to generate csv files corresponding to the respective txt file. But instead of doing this, it generated only 2 csv files and both of them with the same content(which hasn't nothing to do with the respective txt file). Here is the relevant code:

class Microdados:    def __validar_enums(self, ano: enumerate = Anos.DEZ, estados: list = [], modalidades: list = []):        if Estados.TODOS in estados:            estados = list(Estados)[:-1]        if Modalidades.TODOS in modalidades:            modalidades = list(Modalidades)[:-1]        return ano, estados, modalidades    def __obter_dados_documentacao(self, pasta_temporaria: str, pasta_trabalho, modalidades: list, ano: str):        # extraindo csv de documentação para as modalidades escolhidas        div_columns = {}        ibge_datasets = {}        for enum_modalidade in modalidades:            try:                valor_modalidade, descricao_modalidade = enum_modalidade.value                arquivo_csv = os.path.join(pasta_trabalho, "Documentacao_{}.csv".format(descricao_modalidade))                log.debug("Arquivo de documentacao convertido para csv gerado em: {}".format(arquivo_csv))                ibge_desc = pd.read_excel(open(ARQUIVO_DOCUMENTACAO, "rb"), sheet_name=valor_modalidade, header=1)                print(type(ibge_desc))                ibge_desc.dropna(how="all", axis="columns")                ibge_desc.to_csv(arquivo_csv, encoding="utf-8-sig")                col_specification = list(zip(ibge_desc["POSIÇÃO INICIAL"] - 1, ibge_desc["POSIÇÃO FINAL"]))                ibge_datasets[descricao_modalidade] = ibge_desc                div_columns[descricao_modalidade] = col_specification            except Exception as e:                log.error("Error at acessing the datas of documentation: {}".format(e))        return ibge_datasets, div_columns    def obter_dados_ibge(self, ano: enumerate, estados: list, modalidades: list, header: bool = True):        arquivos = glob.glob("listaestados/*.txt")        ano, estados, modalidades = self.__validar_enums(ano, estados, modalidades)        pasta_temporaria = self.__criar_pasta_temporaria()        pasta_trabalho = self.__obter_diretorio_trabalho()        print(pasta_trabalho)        log.debug("Arquivos de saída salvos em {}".format(pasta_trabalho))        valor_ano, descricao_ano = ano.value        ibge_datasets, div_columns = self.__obter_dados_documentacao(pasta_temporaria, pasta_trabalho, modalidades, descricao_ano)        for arquivo_estado in arquivos:            print(arquivos)            for enum_estado in estados:                try:                    valor_estado, estado, sigla = enum_estado.value                    for enum_modalidade in modalidades:                        try:                            valor_modalidade, descricao_modalidade = enum_modalidade.value                            nome_arquivo_modalidade = "Amostra_{}_{}.txt".format(descricao_modalidade, str(valor_estado))                            print(nome_arquivo_modalidade)                            data = pd.read_fwf(arquivo_estado, colspecs=div_columns[descricao_modalidade])                            data.columns = ibge_datasets[descricao_modalidade]["VAR"].tolist()                            arquivo_csv = os.path.join(pasta_trabalho, "{}_{}.csv".format(nome_arquivo_modalidade[:-4], sigla))                            data.to_csv(arquivo_csv, encoding="utf-8-sig", header=header)                            log.info("Arquivo de {} de modalidade {} extraído".format(sigla, descricao_modalidade))                            log.debug("Arquivo de {} de modalidade {} extraído em: {}".format(sigla, descricao_modalidade, arquivo_csv))                        except Exception as e:                            log.error("Erro ao processar os dados de documentação: {}".format(e))                except Exception as e:                    log.error("Erro ao baixar os dados do estado: {}".format(e))if __name__ == "__main__":    ano = Anos.DEZ    estados = [Estados.TODOS]    modalidades = [Modalidades.TODOS]    ibgeparser = Microdados()    ibgeparser.obter_dados_ibge(ano, estados, modalidades)``````

Viewing all articles
Browse latest Browse all 13891

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>