Closed tutalucena closed 2 years ago
Boa tarde @tutalucena. Cara, vamos por partes:
str(Path(getEnv('OUTPUT_FILES_PATH')))
funcione.env
corretamente? Porque pelo que eu to vendo aqui, o script tentou baixar direto na pasta raiz do arquivo. É isso mesmo que você quer? O ideal seria ter uma pasta para os zips e para os unzipeds.Se conseguir resolver, feche os issues, por gentileza. Só pra facilitar a vida do pessoal que mantém o código. Eu só dei clone no repo e to recebendo no e-mail esses issues bobos kkkk vai entender
Boa tarde, Segue apontamentos: -Vi que você já tem um issue aberto. Na próxima vez, responda no mesmo issue. Assim não teremos vários para o mesmo assunto. --Ok, vou fechar os issue assim que resolver. -Não quero ser grosso ou cruel, mas se você quer executar um script python, é recomendável que você conheça um pouco da linguagem. Você domina python? --Não há porque ser grosso eu apenas estou tentando entender,vou ser sincero com você, sou analista de dados, me deram uma atividade fora do meu campo de atuação eu uso python sim porém com foco em outras coisas, de fato tenho muita dificuldade para entender o seu código. Estou fazendo o melhor que eu posso.
Se conseguir resolver, feche os issues, por gentileza. Só pra facilitar a vida do pessoal que mantém o código. Eu só dei clone no repo e to recebendo no e-mail esses issues bobos kkkk vai entender
Evite criar diretórios com espaço. Coloca aspas nos diretórios ou muda para TesteRF
.
Tenta de novo e posta aqui. Tmj
OUTPUT_FILES_PATH=C:/diretoriosemespaco
ou
OUTPUT_FILES_PATH="C:/diretorio com espaco"
entender o seu código
O código não é meu :)
Outra dica que eu posso te dar: O site da receita costumava ser MUITO lerdo pra baixar. Faz tempo que não baixo, não sei como tá hoje. Esse script é zero performático para download pois não é multithread (vai baixar um por um). Se eu fosse você, baixava tudo pelo Chrome, extraia, e apagava a parte de download/unzip do script.
Evite criar diretórios com espaço. Coloca aspas nos diretórios ou muda para
TesteRF
. Tenta de novo e posta aqui. Tmj
OUTPUT_FILES_PATH=C:/diretoriosemespaco
ouOUTPUT_FILES_PATH="C:/diretorio com espaco"
entender o seu código
O código não é meu :)
Eu eliminei o espaço e não deu certo, depois adicionei aspas, e mesmo assim ele faz o dowload dos arquivos no diretório do código =(
Espera o download terminar. Eu ACHO que wget primeiro vai baixar na pasta raiz do script e depois irá mover para a pasta setada no parâmetro out
.
Baixando:
Depois de concluído:
Mas novamente, se eu fosse você baixava pelo Chrome vários ao mesmo tempo, pois o servidor da RBF ainda está em 1999 aparentemente:
@marcelo-franceschini vou aguardar o download finalizar e lhe informo. Independente de dar certo, ou não, eu agradeço ai a sua disponibilidade em me ajudar. Vou baixar as pastas pelo Chrome mesmo para depois fazer as tratativas, demora muito mesmo.
@marcelo-franceschini Após o dowload o debug retornou o seguinte apontamento, não consegui entender...
Desculpa a demora. Troca as linha 25 e 26 de:
output_files = Path(getEnv('OUTPUT_FILES_PATH')) extracted_files = Path(getEnv('EXTRACTED_FILES_PATH'))
para:
output_files = str(Path(getEnv('OUTPUT_FILES_PATH'))) extracted_files = str(Path(getEnv('EXTRACTED_FILES_PATH')))
e apaga a parte de download. Acho que é da linha 63 a 78.
@marcelo-franceschini eu que tenho que pedir desculpas pela série de dúvidas kkk Fiz o correção e ele salvou os arquivos na pasta que designei! Achei que daria tudo certo, porém na hora de criar os índices travou novamente, segue o DEBUG:
Tive o mesmo problema original do @tutalucena e a solução proposta por @marcelo-franceschini , de simplesmente incluir um "str" antes de "(Path(getEnv('OUTPUT_FILES_PATH')))", na linha 25, funcionou.
str(Path(getEnv('OUTPUT_FILES_PATH')))
Muito obrigado!
Estou usando Windows 10 (sei que não é o ideal, mas faz tempo que não tenho uma segunda máquina para Linux) e Thonny (Python 3.7).
E aproveito para agradecer e parabenizar @aphonsoar
ATUALIZAÇÃO: Comemorei cedo demais também. Consegui fazer o download, mas depois caí no mesmo (segundo) erro relatado por @tutalucena (linha 729, "Undefined table"). Imagino que seja um problema de gestão de path no Windows. Movi os arquivos baixados manualmente para a pasta de destino e fiz a descompressão. Fiz um "comment out" nas linhas relativas ao download e descompressão e reiniciei o programa.
Como nada é fácil, tropecei agora em um erro de unicode:
Trabalhando no arquivo: K3241.K03200Y0.D11113.EMPRECSV [...]
Traceback (most recent call last):
File "C:\Users\danie\Documents\Programming\CNPJ-scraper\RFB_ETL\ETL_coletar_dados_e_gravar_BD.py", line 185, in <module>
dtype=empresa_dtypes)
File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\util\_decorators.py", line 311, in wrapper
return func(*args, **kwargs)
File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\readers.py", line 586, in read_csv
return _read(filepath_or_buffer, kwds)
File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\readers.py", line 488, in _read
return parser.read(nrows)
File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\readers.py", line 1047, in read
index, columns, col_dict = self._engine.read(nrows)
File "C:\Users\danie\AppData\Roaming\Python\Python37\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 223, in read
chunks = self._reader.read_low_memory(nrows)
File "pandas\_libs\parsers.pyx", line 801, in pandas._libs.parsers.TextReader.read_low_memory
File "pandas\_libs\parsers.pyx", line 857, in pandas._libs.parsers.TextReader._read_rows
File "pandas\_libs\parsers.pyx", line 843, in pandas._libs.parsers.TextReader._tokenize_rows
File "pandas\_libs\parsers.pyx", line 1917, in pandas._libs.parsers.raise_parser_error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 137360: invalid continuation byte
Tentei inserir um "encoding="utf-8" (tentei também encoding="latin-1") na linha 180, mas não deu certo.
Eu tambem enfrentei o problema no wget e na definicao dos paths. com isso, subi ha pouco um commit com algumas correcoes no codigo para Windows 10 - a definicao do objeto como tipo WindowsPath
estava causando problema, eh melhor deixar como string
mesmo. Testei o processo end-to-end aqui e agora funcionou perfeitamente, detalhes aqui: commit.
Com isso, entendo que o problema reportado nessa issue (erro no wget e path) ficou solucionado.
@tardoproto, conseguiu resolver este outro problema de encoding que vc enfrentou?
@tardoproto Tive o mesmo problema, como resolveu?
@Rodrigojxj vc clonou o projeto novamente? Eu subi um commit em Abril que aparentemente resolveu isso - pra mim funcionou 100%
Sim, consegui colocando encoding='ISO-8859-1' na parte de empresa, porém tive problemas novamente em estabelecimento.
Boa tarde pessoal! Ao corrigir o erro do .env, o código ao ser rodado apresentou o seguinte erro: Por favor, peço ajuda esse código vai me ajudar muito!