Erro em Wget.dowload
Closed this issue · 17 comments
Boa tarde @tutalucena.
Cara, vamos por partes:
- 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.
- 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? Você ta utilizando uma IDE bem poderosa (eu particularmente acho até meio pesada e lerda. Mas isso é pessoal). Você já tentou debugar? Se você debugar você vai conseguir ver o que está acontecendo na linha que aponta o erro. Ele está tentando concaternar dois datatypes diferentes. TALVEZ um
str(Path(getEnv('OUTPUT_FILES_PATH')))
funcione - Você tentou googlar o erro antes de postar aqui? (novamente, não quero ser grosso)
- Você configurou o arquivo
.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 quiser colocar uma foto do seu arquivo .env, não se acanhe. Muito provavelmente seu db é apenas localhost, então não há perigo em compartilhar seu login e senha (mas você pode ocultar essa parte pelo paint se quiser. Aproveita que eu fechei minha sprint hoje, to com tempo livre e bom humor rs)
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.
- Você ta utilizando uma IDE bem poderosa (eu particularmente acho até meio pesada e lerda. Mas isso é pessoal). Você já tentou debugar? Se você debugar você vai conseguir ver o que está acontecendo na linha que aponta o erro. Ele está tentando concaternar dois datatypes diferentes. TALVEZ um str(Path(getEnv('OUTPUT_FILES_PATH'))) funcione
--Eu não consegui entender o erro apontado pelo debug, vou tentar isso que sugeriu.Você tentou googlar o erro antes de postar aqui (novamente, não quero ser grosso)Sim.Você configurou o arquivo .env corretamente? Porque pelo que eu to vendo aqui, o scrpit tentou baixar direto na pasta raiz do script. É isso mesmo que você quer? O ideal é ter uma para para os zips e para on unzipeds
--Sim, eu percebi que ele não baixou lá eu não entendi pq isso ocorreu. Aparentemente consegui configurar corretamente.Se quiser colocar uma foto do seu arquivo .env, não se acanhe, muito provavelmente seu db é apenas localhost, então não há perigo em compartilhar seu login e senha (mas você pode ocultar essa parte pelo paint se quiser. Aproveita que eu fechei minha sprint hoje e to com tempo livre e bom humor rs).
-Agradeço, farei isso!
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 =(
@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.