-
Notifications
You must be signed in to change notification settings - Fork 69
FileNotFoundError: [Errno 2] No such file or directory: '/code/data/tmp/5368pmfscp0012021.rar' #311
Comments
Eu pensei em verificar a extensão antes de tentar executar o Algo mais ou menos assim (nesse arquivo): has_rar_extension = path.endswith('.rar')
raw = parser.from_file(path)
if not has_rar_extension and not keep_file:
Path(path).unlink() |
has_rar_extension = path.endswith('.rar')
if has_rar_extension:
return
raw = parser.from_file(path)
if not keep_file:
Path(path).unlink()
if a_file:
a_file.content = raw["content"]
a_file.save()
return raw["content"] Ou algo assim, dependendo do que seja retornado pelo |
Na verdade, o melhor seria evitar pular os arquivos Uma alternativa seria usar alguma outra biblioteca para descompactar os arquivos e aí sim salvá-los de maneira individual. Isso traria alguns problemas, como nós salvando arquivos de corel draw etc. Mas só testando pra saber hehe Pesquisando sobre .rar e Apache Tika vi isso aqui:
Talvez só tenhamos que modificar algo na configuração. |
@anapaulagomes tenho algumas dúvidas, cê poderia me ajudar?
Procurei um pouco na documentação da |
Claro! :)
|
Show! Daí, quando manipulamos arquivos compactados com o Tika, ele vai saber como manipular todos os tipos de arquivos lá dentro (PDF, corel draw, txt) e nos trazer uma string com todo o conteúdo, confere? Eu procurei dentro da documentação to Encontrei o Estava pensando que se esse for realmente o caso, podíamos tentar descompactar usando algum pacote python (como a rarfile que suporta o RAR5, por exemplo) e mudarmos a função de processamento de |
Isso mesmo.
Eu gosto dessa ideia! 🏆 Mas, sim, temos que ver o impacto. Pensando rápido aqui eu acredito que não seria um problema. |
Feshow! Vou fazer uns testes/profilings e trago mais informações sobre a mudança. |
Fazendo alguns experimentos com o
cenário In [1]: from tika import parser
In [2]: rar_file = '5152pmfscp0272020.rar'
In [3]: pdf_file = '5152pmfscp0272020/teste.pdf'
In [4]: rar_parser = parser.from_file(rar_file)
In [5]: pdf_parser = parser.from_file(pdf_file)
In [6]: pdf_parser['metadata']['X-Parsed-By']
Out[6]:
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pdf.PDFParser']
In [7]: rar_parser['metadata']['X-Parsed-By']
Out[7]:
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pkg.RarParser']
In [8]: len(rar_parser['content'] or '')
Out[8]: 0
In [9]: len(pdf_parser['content'] or '')
Out[9]: 225739 Baixei um arquivo Uma outra ideia que tive foi: A ideia de descompactar e compactar pra enviar é pra que todos os arquivos permaneçam juntos para retirarmos um conteúdo único. In [10]: import zipfile
...:
...: zip_file = zipfile.ZipFile('teste.zip', 'w', zipfile.ZIP_DEFLATED)
...: for file_name in [f'5152pmfscp0272020/teste{num}.pdf' for num in range(1, 6)]:
...: zip_file.write(file_name, file_name)
...:
In [11]: zip_parser = parser.from_file('teste.zip')
In [12]: zip_parser['metadata']['X-Parsed-By']
Out[12]:
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pkg.PackageParser',
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pdf.PDFParser'],
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pdf.PDFParser'],
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pdf.PDFParser'],
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pdf.PDFParser'],
['org.apache.tika.parser.DefaultParser',
'org.apache.tika.parser.pdf.PDFParser']]
In [13]: len(zip_parser['content'] or '')
Out[13]: 574902 Os aquivos de testes foram retirados do mesmo arquivo |
Encontrei uma abordagem interessante no stackoverflow para converter arquivos Podemos usar a biblioteca >>> import tempfile
# create a temporary directory using the context manager
>>> with tempfile.TemporaryDirectory() as tmpdirname:
... print('created temporary directory', tmpdirname)
>>>
# directory and contents have been removed Dessa forma, acredito que conseguimos até fazer uma lista de formatos permitidos, ou a serem ignorados, e criamos o arquivo |
Massa, @exageraldo! Por ora, podemos converter em zip e mandar tudo mesmo. Não são muitos os que tem arquivos corel draw e outros. hahaha Obrigada pela investigação! 🥇 Taca lhe pau! |
Curiosidade: dos 260 mil arquivos que temos, 500 deles são |
Essa exceção acontece porque o Tika não consegue extrair o rar 5 (formato proprietário). Temos que pegar a exceção e cancelar o retry nesse caso.
Sentry Issue: MARIA-QUITERIA-4V
The text was updated successfully, but these errors were encountered: