O que é o formato de ficheiro PICKLE?
Arquivos com a extensão .pickle armazenam objetos Python serializados usando o módulo pickle, a biblioteca de serialização de objetos integrada do Python. Tanto .pickle quanto .pkl são extensões intercambiáveis para o mesmo formato; .pickle é a forma explícita mais longa, enquanto .pkl é a variante compacta de três caracteres em uso desde o Python 1.x.
Conteúdo dos arquivos Python Pickle
Objetos serializados em arquivos .pickle podem ser de qualquer tipo Python. Arquivos .pickle são usados para serializar objetos de banco de dados, fazer cache de pesos de modelos de machine-learning ou armazenar o estado do programa entre execuções. Apenas arquivos .pickle de fontes confiáveis devem ser usados, pois tais arquivos podem conter software malicioso - a desserialização de um pickle não confiável pode executar código Python arbitrário. Objetos Pickle podem ser compactados externamente usando gzip, bz2 ou lzma.
Como os arquivos Python PICKLE são criados?
O processo de serialização é chamado de «pickling» e é feito usando os métodos dump() e dumps(). O método dump() é usado para serializar um objeto em um arquivo, enquanto dumps() salva o objeto como um objeto de bytes. A desserialização - converter o fluxo de bytes de volta ao objeto original - é feita usando load() e loads(); esse processo é referido como «unpickling».
O protocolo pickle controla a versão do formato binário. O Protocolo 0 é ASCII legível por humanos; os Protocolos 1-5 são progressivamente binários, com o Protocolo 5 (Python 3.8+) adicionando buffers fora de banda para manipulação eficiente de grandes matrizes .NPY. Em fluxos de trabalho de machine-learning, o .pickle é amplamente utilizado para persistir modelos scikit-learn e checkpoints do PyTorch, embora o SafeTensors esteja ganhando adoção como uma alternativa mais segura especificamente para pesos de modelos.
Segurança e proteção
RISCO: HIGHAVISO CRÍTICO: Arquivos Pickle podem executar código Python arbitrário quando carregados. Um arquivo .pickle malicioso pode excluir arquivos, baixar malware ou assumir o controle de um sistema. Nunca carregue um arquivo pickle de uma fonte não confiável. Em fluxos de trabalho de ML/AI, pickles maliciosos em repositórios de modelos (Hugging Face Hub, GitHub) são um vetor de ameaça ativo. Use o picklescan para verificar arquivos antes de carregar, ou mude para o formato SafeTensors para pesos de modelos. CVE-2025-1889: picklescan < 0.0.22 poderia ser contornado usando extensões de arquivo não padronizadas dentro de pacotes de modelos baseados em arquivo.
Detalhes do formato
em resumoProgramas que abrem arquivos PICKLE
Detalhes técnicos
especificação profunda| Codificação de arquivo | Binário (protocolos 1-5); opcodes ASCII legíveis por humanos (protocolo 0) |
| Assinatura do arquivo (magic bytes) | 0x80 seguido pelo byte da versão do protocolo; ex: 0x80 0x05 para protocolo 5 (Python 3.8+); o protocolo 0 não possui magic binário |
| Protocolos Pickle | 0 (ASCII, Python 1.x); 1 (binário, Python 1.x); 2 (classes de novo estilo, Python 2.3+); 3 (bytes, Python 3.0+); 4 (objetos >4 GB, Python 3.4+); 5 (buffers fora de banda, Python 3.8+) |
| Protocolo padrão | O Protocolo 5 é o padrão no Python 3.8 e posterior |
| Compactação | Nenhuma nativa; comumente envolvido externamente em gzip, bz2 ou lzma; o joblib adiciona sua própria camada de compactação |
| Criptografia | Nenhuma - sem criptografia integrada; criptografe no nível do sistema de arquivos ou do wrapper, se necessário |
| Tamanho de arquivo típico | Abaixo de 1 MB para configurações de modelo; 1 MB - vários GB para pesos de modelos de ML e grandes conjuntos de dados |
| Risco de segurança | A desserialização de dados pickle não confiáveis pode executar código Python arbitrário via ganchos __reduce__ - nunca faça o unpickle de arquivos de fontes não confiáveis |
| Estrutura interna | Fluxo de opcodes pickle codificando objetos Python recursivamente; Protocolo 4+ usa frames para streaming em pedaços; Protocolo 5 adiciona buffers fora de banda para cópia zero de grandes matrizes |
| Tipo MIME | application/octet-stream (formal); application/x-pickle (informal) |
| Multiplataforma | Independente de plataforma; funciona em qualquer SO suportado pelo Python (Windows, Linux, macOS) |
| API de Serialização | dump() e dumps() para pickling; load() e loads() para unpickling |
| Uso em ML/AI | Formato de serialização primário para modelos scikit-learn e checkpoints do PyTorch; SafeTensors está ganhando adoção como uma alternativa mais segura para pesos de modelos |
| Lançado | 1994 (Python 1.1; pickle module first released) |
| Versão mais recente | Protocol 5 (Python 3.8, 2019); default protocol 5 from Python 3.14 |
| Padrão aberto | Sim · livre de royalties |
| Especificação | docs.python.org |
Conversões de PICKLE
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos PICKLE.