Há não muito tempo, a tarefa à minha frente era analisar o número de arquivos do Excel criados para um determinado mês do ano. Não vou entrar em detalhes, direi brevemente: avaliar o trabalho dos funcionários de uma empresa. Havia cerca de mil arquivos e a essência da tarefa era fazer um cronograma compreensível na forma de um histograma para o chefe da empresa, em que mês do ano e quantos arquivos foram criados (estas eram notas de remessa).
Eu pensei que seria bom usar metadados de arquivo para esse fim, ou seja, execute os arquivos existentes em um loop, extraia as datas de criação do arquivo e carregue tudo como uma lista no Matplotlib para criar um histograma.
Eu nunca havia trabalhado com metadados antes dessa época, embora a necessidade surgisse periodicamente, mas fosse dispensada por outros meios, portanto não havia experiência. E na manhã seguinte, tendo feito sanduíches e tomando um litro de café, ele começou a implementar sua idéia.
"Prosseguir" é claro, é fortemente dito. Antes de tudo, é natural pesquisar na Internet informações sobre metadados, sobre como trabalhar com eles no Python, projetos similares etc. Quase imediatamente me deparei com o módulo oletools para Python, ele está no GitHub e no PyPi, há uma boa documentação. Eu estudei por algumas horas. Oletools instalados. Tudo funcionou, os metadados foram extraídos corretamente. Mas No terminal. Eu precisava de um script com um loop. Onde quer que eu na Internet não tenha pesquisado como "fazer amigos" de oletools e IDLE, cheguei a 15 (!) Páginas em um mecanismo de pesquisa. A informação é zero.
Tenho certeza, sem sombra de dúvida, de que este é um módulo maravilhoso, provavelmente muito poderoso, mas não funcionou para mim. Na próxima tentativa (à noite) de forçar o script a extrair de alguma forma os metadados do arquivo, outra exceção foi levantada. E aqui notei que os oletools carregam o módulo olefile para o trabalho. Digitei um mecanismo de busca e qual foi a minha surpresa quando descobri que era exatamente isso que estava procurando o dia todo. Documentação muito clara. Eu li em meia hora e, imediatamente, desenhei um roteiro.
olefile : pip3 install --user olefile
E aqui está o próprio script, que extrai os metadados do arquivo do Excel (eu só precisava do valor meta.last_saved_time):
import olefile File_Ole='File.xls' assert olefile.isOleFile(File_Ole) # OLE ole = olefile.OleFileIO(File_Ole) meta = ole.get_metadata() # print(' : '+str(meta.create_time)) # print(' : '+str(meta.last_saved_time))# meta.dump() # ole.close() #
Não vou dar todo o código para o meu script aqui, minha tarefa neste post foi falar sobre a extração simples e rápida de metadados de um arquivo do Excel usando o módulo olefile. A propósito, este módulo extrai metadados de vários formatos de arquivo; mais detalhes podem ser encontrados na documentação .
Para ser justo, também vale a pena notar que o olefile extrai metadados apenas de arquivos do Excel 1997-2003, ou seja, com a extensão .xls. Para arquivos .xlsx, escrevi um conversor com o módulo pyexcel.
Bem, isso é tudo. Obrigado por sua atenção, espero que meu post ajude alguém a economizar tempo, nervos e, o mais importante, a manter um bom humor.