Что такое формат файла PICKLE?
Файлы с расширением .pickle хранят объекты Python, сериализованные с использованием модуля pickle, встроенной библиотеки сериализации объектов Python. Расширения .pickle и .pkl взаимозаменяемы для одного и того же формата; .pickle - это более длинная явная форма, в то время как .pkl - компактный трехсимвольный вариант, используемый со времен Python 1.x.
Содержимое файлов Python Pickle
Сериализованные объекты в файлах .pickle могут быть любого типа Python. Файлы .pickle используются для сериализации объектов баз данных, кэширования весов моделей машинного обучения или сохранения состояния программы между запусками. Следует использовать только файлы .pickle из доверенных источников, так как такие файлы могут содержать вредоносное ПО - десериализация ненадежного pickle-файла может привести к выполнению произвольного кода Python. Объекты Pickle могут быть сжаты извне с помощью gzip, bz2 или lzma.
Как создаются файлы Python PICKLE?
Процесс сериализации называется «консервацией» (pickling) и выполняется с помощью методов dump() и dumps(). Метод dump() используется для сериализации объекта в файл, а dumps() сохраняет объект в виде объекта bytes. Десериализация - преобразование потока байтов обратно в исходный объект - выполняется с помощью load() и loads(); этот процесс называется «расконсервацией» (unpickling).
Версия протокола pickle управляет бинарным форматом. Протокол 0 - это человекочитаемый ASCII; протоколы 1-5 являются прогрессивно бинарными, при этом протокол 5 (Python 3.8+) добавляет внеполосные буферы для эффективной обработки больших массивов .NPY. В рабочих процессах машинного обучения .pickle широко используется для сохранения моделей scikit-learn и чекпоинтов PyTorch, хотя SafeTensors набирает популярность как более безопасная альтернатива специально для весов моделей.
Безопасность и защита
РИСК: HIGHКРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ: Файлы Pickle могут выполнять произвольный код Python при загрузке. Вредоносный файл .pickle может удалять файлы, загружать вредоносное ПО или захватывать управление системой. Никогда не загружайте файл pickle из ненадежного источника. В рабочих процессах ML/AI вредоносные файлы pickle в репозиториях моделей (Hugging Face Hub, GitHub) являются активным вектором угроз. Используйте picklescan для сканирования файлов перед загрузкой или перейдите на формат SafeTensors для весов моделей. CVE-2025-1889: picklescan < 0.0.22 можно было обойти, используя нестандартные расширения файлов внутри архивных пакетов моделей.
Детали формата
в двух словахПрограммы, открывающие файлы PICKLE
Технические подробности
глубокая спецификация| Кодировка файла | Бинарная (протоколы 1-5); человекочитаемые коды операций ASCII (протокол 0) |
| Магические байты | 0x80, за которым следует байт версии протокола; например, 0x80 0x05 для протокола 5 (Python 3.8+); протокол 0 не имеет бинарной метки |
| Протоколы Pickle | 0 (ASCII, Python 1.x); 1 (бинарный, Python 1.x); 2 (классы нового стиля, Python 2.3+); 3 (байты, Python 3.0+); 4 (объекты >4 ГБ, Python 3.4+); 5 (внеполосные буферы, Python 3.8+) |
| Протокол по умолчанию | Протокол 5 является стандартным в Python 3.8 и более поздних версиях |
| Сжатие | Встроенное отсутствует; обычно упаковывается извне в gzip, bz2 или lzma; joblib добавляет собственный слой сжатия |
| Шифрование | Отсутствует - встроенного шифрования нет; при необходимости шифруйте на уровне файловой системы или оболочки |
| Типичный размер файла | Менее 1 МБ для конфигураций моделей; от 1 МБ до нескольких ГБ для весов моделей ML и больших наборов данных |
| Риск безопасности | Десериализация ненадежных данных pickle может привести к выполнению произвольного кода Python через хуки __reduce__ - никогда не расконсервируйте файлы из ненадежных источников |
| Внутренняя структура | Поток кодов операций pickle, рекурсивно кодирующих объекты Python; протокол 4+ использует фреймы для поточности; протокол 5 добавляет внеполосные буферы для копирования больших массивов без участия CPU |
| MIME-тип | application/octet-stream (формально); application/x-pickle (неформально) |
| Кроссплатформенность | Платформенно-независимый; работает в любой ОС, поддерживаемой Python (Windows, Linux, macOS) |
| API сериализации | dump() и dumps() для сериализации; load() и loads() для десериализации |
| Использование в ML/AI | Основной формат сериализации для моделей scikit-learn и чекпоинтов PyTorch; SafeTensors набирает популярность как более безопасная альтернатива для весов моделей |
| Выпущен | 1994 (Python 1.1; pickle module first released) |
| Последняя версия | Protocol 5 (Python 3.8, 2019); default protocol 5 from Python 3.14 |
| Открыть стандартное | Да · без роялти |
| Спецификация | docs.python.org |
Конвертации PICKLE
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах PICKLE.