aphonsoar / Receita_Federal_do_Brasil_-_Dados_Publicos_CNPJ

Dados Públicos de CNPJ disponibilizados pela Receita Federal do Brasil
MIT License
253 stars 108 forks source link

_csv.Error: line contains NULL #8

Closed jeff-pal closed 1 year ago

jeff-pal commented 2 years ago

A leitura de alguns dos arquivos de Estabelecimento gera o erro _csv.Error: line contains NUL, tanto no Linux quanto no Windows. Não consegui solucionar esse problema diretamente no código, o que funcionou para mim foi remover manualmente os caracteres NULL, através do comando Unix: sed -i 's/\x0//g' FILE_NAME.

No Windows foi necessário instalar o Bash Ubuntu da Microsoft Store, que permite execução de comandos unix, através da Interoperabilidade do Windows com o Linux.

O ideal seria não precisar de um fix manual, por isso, decidi abrir essa Issue, para reportar o problema, uma solução temporária, e deixar a questão em aberto para novas alternativas, preferencialmente resolvendo essa questão diretamente no código.

Trabalhando no arquivo: K3241.K03200Y4.D10612.ESTABELE [...]
Linhas no arquivo K3241.K03200Y4.D10612.ESTABELE: 4753435
Este arquivo será dividido em 5 partes para inserção no banco de dados
Iniciando a parte 1 [...]
Arquivo K3241.K03200Y4.D10612.ESTABELE inserido com sucesso no banco de dados! - Parte 1
Iniciando a parte 2 [...]
Arquivo K3241.K03200Y4.D10612.ESTABELE inserido com sucesso no banco de dados! - Parte 2
Iniciando a parte 3 [...]
Traceback (most recent call last):
  File "D:\Base CNPJ 2021\base-cnpj-postgres\code\main.py", line 111, in <module>
    database.insert_data(
  File "D:\Base CNPJ 2021\base-cnpj-postgres\code\database.py", line 83, in insert_data
    table = pd.read_csv(
  File "C:\Users\anasi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\io\parsers.py", line 610, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\anasi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\io\parsers.py", line 468, in _read
    return parser.read(nrows)
  File "C:\Users\anasi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\io\parsers.py", line 1057, in read
    index, columns, col_dict = self._engine.read(nrows)
  File "C:\Users\anasi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\io\parsers.py", line 2440, in read
    content = self._get_lines(rows)
  File "C:\Users\anasi\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pandas\io\parsers.py", line 3236, in _get_lines
    new_rows.append(next(self.data))
_csv.Error: line contains NULL
Diglee147 commented 2 years ago

to tendo o mesmo problema

Diglee147 commented 2 years ago

NULL byte detected. This byte cannot be processed in Python's native csv library at the moment, so please pass in engine='c' instead Vou tentar a própria sugestão do IDLE.